STM32---TIM

4 篇文章 0 订阅

1.
在编辑定时器代码时,发现刚配置完定时器即使没有使能定时器也会进入一次定时器中断

后来才发现原来在TIM_TimeBaseInit()函数中会产生一次更新事件

/* Generate an update event to reload the Prescaler and the Repetition counter 
     values immediately */  
  TIMx->EGR = TIM_PSCReloadMode_Immediate;

会加载重计数器,因此在刚配置完定时器后需要手动清除一次标识

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  

while(TIM_GetFlagStatus(TIM3, TIM_IT_Update) == RESET);//等待软件更新数据  
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清中断 

2.
COM事件
是用手动产生的,库里面有个TIM_EventSource函数,用这个函数可产生COM事件。预先将CCXE,CCXNE,OCXM配置好,然后调这个函数产生COM事件。我看到的实例是用SYSTICK定时器产生中断,在这个中断函数中调用TIM_EventSource函数。
正好这个有玩过,控制过电机,对这个深有体会,我打个比方说:
比如无刷电机换向时,一般是三相要同时换向的,但是你在软里设置换向时肯定是一次只能设置一相,这就达不到三相同时换向了不。其实简单的办法就是启用 STM32的COM事件,你先逐个设置好每相的换向(注意:此时虽然设置了,但实际上并不会进行换向),然后再调用COM事件,此时,三相将同时换向,就 这么来的。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值