本帖最后由 lkl0305 于 2015-6-20 11:46 编辑 收到Nucleo-F303RE,学习CUBE库。 定时器中呼吸灯应该是比较经典的程序了。下面给大家分享一下。 我想使用定时器输出PWM控制板子上的LED实现,查了一下资料,发现正好TIM2的Ch1通道是链接到了Pa5,刚刚好。 于是在Cube中建立工程,进行TIM2配置, (1)如图,选择Tim2: (2)接下来参数设置,设置100us定时器基础时间,Ch1位PWM输出。 (3)设置开起定时器中断: (4)设置PA5输出,TIM2——CH1通道 (5)在主程序中可以看到自动生成的TIM2的配置函数: (6)中断程序中可以看到,定时器中断时自动调用HAL_TIM_IRQHandler(&htim2); (7)为了记录定时器时基中断,定义变量TIM2_PeriodElapsed来表示状态,0没有中断,1中断。 定义TIM2_Channl1_Pulse存储通道1的比较值。 (8)在定时器中断的回调函数中置TIM2_PeriodElapsed为1 (9)下面主函数中添加自己的代码: 启动定时器通道1的PWM方式: HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); 以中断方式启动基础定时器: HAL_TIM_Base_Start_IT(&htim2); 下面循环中修改TIM2的比较寄存器的值来调整PWM输出脉冲宽度:TIM2->CCR1 = TIM2_Channl1_Pulse;这个在库中找不到对应的函数,不知道大家是怎么处理的?希望大家来交流一下!!! 最后编译下载就可以看到预期的效果,LED灯逐渐亮起来,然后循环。演示效果就不上了大家自行下载演示 下面上程序: |
多谢分享。。支持
TIM2->CCR1 = TIM2_Channl1_Pulse;
在HAL库里用:
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, TIM2_Channl1_Pulse);
http://www.baike.com/wiki/%E5%91%BC%E5%90%B8%E7%81%AF
多谢指导交流
非常准确
多谢支持,共同学习