[CW32F003系列]

【CW32F003FxPx StartKit开发板】-04-定时器测试

[复制链接]
311|3
手机看帖
扫描二维码
随时随地手机跟帖
shenxiaolin|  楼主 | 2024-5-31 17:00 | 显示全部楼层 |阅读模式
今天闲来没事,就打算吧串口和定时器都做了,但是再定时器的时候,自己有点马虎,把定时器当做计数器使用了,当然,主要是原厂的代码有点迷惑,也怪自己学艺不精,原厂的是以基本定时器产生计数,然后计数器来计数,相当与一个二层定时器,所以自己也很奇怪,还是一个网有发现了问题,这才得以正常使用,
另外就是我这里设置的系统时钟是48M,设置了48M前,需要设置Flash的延迟等待时间为两个时钟周期,因为系统时钟大于24M的情况下,都需要设置Flash延迟大于2个周期,否则会导致系统时钟配置失败,整个系统无法启动,其次,修改了时钟,对应的通信接口的时钟也需要跟着一起更改,不然发送出来的波特率就不对了,这是今天调试过程中遇到的问题,自己也总结了一下,分享给大家,希望对大家有所帮助。
好了,那就直接来上代码吧,代码很简单。
#include "DRV_TIM.h"




void TIM_Init(void)
{

  GTIM_InitTypeDef GTIM_InitStruct;
        __RCC_GTIM_CLK_ENABLE();
       
  GTIM_InitStruct.Mode = GTIM_MODE_TIME;
  GTIM_InitStruct.OneShotMode = GTIM_COUNT_CONTINUE;
  GTIM_InitStruct.Prescaler = GTIM_PRESCALER_DIV16;//--48M/16=3M=3000 000
  GTIM_InitStruct.ReloadValue = 2999;              //--2999个计数代表是1ms        
  GTIM_InitStruct.ToggleOutState = DISABLE;
  GTIM_TimeBaseInit(>IM_InitStruct);

  GTIM_ITConfig(GTIM_IT_OV, ENABLE);
       
        NVIC_EnableIRQ(GTIM_IRQn);
        NVIC_SetPriority(GTIM_IRQn,1);
       
  GTIM_Cmd(ENABLE);
}



unsigned int GTim_Count=0;

void GTIM_IRQHandlerCallBack(void)
{
  if (GTIM_GetITStatus(GTIM_IT_OV))
  {
                GTim_Count++;
                if(GTim_Count==500)
                {
                  GTim_Count=0;
                        GPIO_TogglePin(CW_GPIOA,GPIO_PIN_6);
                }
    GTIM_ClearITPendingBit(GTIM_IT_OV);
  }
}

void GTIM1_IRQHandler(void)
{
   GTIM_IRQHandlerCallBack();

}



























使用特权

评论回复
caigang13| | 2024-6-2 17:56 | 显示全部楼层
48MHz的主频,对于M0内核来说还是不错了。

使用特权

评论回复
主要还是看要实现的功能,一般情况下48M都能满足大部分环境

使用特权

评论回复
AdaMaYun| | 2024-6-13 20:31 | 显示全部楼层
48MHz的主频已经够用了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:运达电气-产品经理
简介:毕业于西南科技大学,从事MCU、MPU开发工作近8年,熟悉嵌入式软硬件开发流程,产品管理以及现场项目管理。

42

主题

543

帖子

5

粉丝