申小林 · 2022年11月22日 · 四川

【GD32F427开发板试用】-03-定时器1 的不算坑的坑和时钟设置

先说一下我使用定时器1 的时候吧,最开始我以为定时器1是挂在APB1上的,随意按照惯性思维,定时器的时钟应该和APB1相等数据手册上说的APB1最大频率为50MHz,所以我单纯的以为定时器1 的输入时钟就是50MHz,我按照50MHz配置之后,设置灯闪的频率为1Hz,但是实际结果却是这个灯光太耀眼,闪得眼睛都快瞎了。于是就开始找问题,看到例程里面有一个配置选项,感觉很奇怪,以为就是简单的时钟选择,但是细读注释才发现一个是倍频选择,2倍或者四倍的选择。好吧,
踩坑证据1:数据手册和用户手册描述不一致
1.png2.png
踩坑证据2:实际上不存在1倍频的选项,只能2倍频或者4倍频
3.png4.png
好吧,这个不算坑的坑,我已经帮你们踩了,后面就靠你们自己了
下面上自己写的代码,定时器闪个灯
`#include "DRV_TIM1.h"

void Time1_Init(void)
{

timer_parameter_struct timer_initpara;                //--声明结构体
rcu_periph_clock_enable(RCU_TIMER1);                  //--使能定时器时钟

// rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL2); //--选择时钟源-- 倍频选择--

timer_struct_para_init(&timer_initpara);
timer_deinit(TIMER1);
   
/* TIMER1 configuration */
timer_initpara.prescaler         = 119;//--APB 1 最大时钟是60M,但是时钟输入有倍频设置,上面倍频选择的是2倍频,所以实际时钟为 120MHz,所以这里设置为120分频-即为1M时钟--向上计数1000,即表示为1ms
timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
timer_initpara.counterdirection  = TIMER_COUNTER_UP;
timer_initpara.period            = 1000;
timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
timer_initpara.repetitioncounter = 0;
timer_init(TIMER1,&timer_initpara);

/* auto-reload preload enable */
timer_auto_reload_shadow_enable(TIMER1);
/* TIMER1 enable */
timer_enable(TIMER1);
nvic_irq_enable(TIMER1_IRQn, 0, 1);  //--设置中断优先级
timer_interrupt_enable(TIMER1,TIMER_INT_UP);   //--设置向上计数中断使能--

}
unsigned int DataCount=0;
//--中断响应函数----
void TIMER1_IRQHandler(void)
{

if(RESET!=timer_interrupt_flag_get(TIMER1,TIMER_INT_FLAG_UP))
{
    timer_interrupt_flag_clear( TIMER1 ,TIMER_INT_FLAG_UP);
    DataCount++;
    if(DataCount==500)
    {
       gpio_bit_set(GPIOC, GPIO_PIN_6);
    }
    if(DataCount==1000)
    {
        DataCount=0;
        gpio_bit_reset(GPIOC, GPIO_PIN_6);
    }
    

}

}

/======================= end of the files ================================================/

`
主函数就不加上来了,初始化一下就好了。今天的分享就到这里。

推荐阅读
关注数
10688
内容数
187
中国高性能通用微控制器领域的领跑者兆易创新GD系列芯片技术专栏。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息