赞
踩
TIM1和TIM8高级定时器框图如下:
TIM中的中断如下图,除了DMA中断外,常用的几类中断:
重复计数器在以下任一条件成立时递减:
从上图中可以看出:对于中心对齐模式,RCR不同值的含义,此处产生UI(update interrupt)中断
在STM32CubeMX中设置Trigger Event为 UpdateEvent时,Repetition Counter才起作用
设置Trigger Event为其他模式时,Repetition Counter不起作用
PWM输出模式可以与TIM的对齐模式对应起来。
PWM模式寄存器TIMx_CR1中的CMS[1:0]:根据产生中断方式不同来区分,此处会产生CCxI(capture/compare interrupt),会影响输出比较中断触发时间点,但是不会影响PWM输出波形
对应STM32CubeMX选择counter mode
选择Trigger EVent Selection为:Update Event,这里用的TIM计数器Update interrupt
设置Repetition Counter = 1,只在每次下溢时产生中断,每次上溢时不产生中断
因为是中心对齐模式,所以Counter register从0向上计数ARR值(3500),再从ARR值(3500)向下计数到0。所以Update Event触发的时间只和ARR寄存器相关,和CCR值无关
这里CCR的值,即pulse,触发的是ICxI,不会影响UI(Update interrupt)
选择Trigger EVent Selection为:Output compare(OC4REF),这里用的PWM的ICxI 中断
选择TIM1的Channel4为 PWM generation no Output
设置Trigger EVent Selection为 Output compare(OC4REF)
这里由CCR的值,即pulse触发中断,与ARR值,即period无关
设置PWM generation Channel4的 pulse,确定采用时间点:
以上两种模式存在同样的问题:
PWM Channel1 N(蓝色)高电平中心点,与注入中断触发输出(黄色)始终有3us的延时,无法消除。可能原因是中断回调函数中,设置PC4电平需要花费时间
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_4);
m0_phB = hadc->Instance->JDR1;
m0_phC = hadc->Instance->JDR2;
}
两者的主要区别:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。