lkl0305 发表于 2015-6-14 22:39:28

【Nucleo-F303RE开发】也来个呼吸灯程序

本帖最后由 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灯逐渐亮起来,然后循环。演示效果就不上了:lol大家自行下载演示
下面上程序:


===============================================================
上个演示吧!刚学会的


Paderboy 发表于 2015-6-15 00:10:07

本帖最后由 Paderboy 于 2015-6-15 00:19 编辑

多谢分享。。支持
TIM2->CCR1 = TIM2_Channl1_Pulse;
在HAL库里用:
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, TIM2_Channl1_Pulse);

mark0668 发表于 2015-6-15 01:05:58

多谢分享。

为什么是EEFOCUS小白 发表于 2015-6-15 08:20:15

不错,cube呼吸灯

黑溱郎 发表于 2015-6-15 08:31:27

cube呼吸灯,多谢分享。

莫林2020 发表于 2015-6-15 08:51:56

什么是呼吸灯

slotg 发表于 2015-6-15 08:59:00

莫林2020 发表于 2015-6-15 08:51
什么是呼吸灯

http://www.baike.com/wiki/%E5%91%BC%E5%90%B8%E7%81%AF

dsjsjf 发表于 2015-6-15 22:18:48

不错,谢谢分享

lkl0305 发表于 2015-6-15 22:57:22

Paderboy 发表于 2015-6-15 00:10
多谢分享。。支持
TIM2->CCR1 = TIM2_Channl1_Pulse;
在HAL库里用:


多谢指导交流:D

lkl0305 发表于 2015-6-15 22:58:44

slotg 发表于 2015-6-15 08:59
http://www.baike.com/wiki/%E5%91%BC%E5%90%B8%E7%81%AF

非常准确:D
页: [1] 2
查看完整版本: 【Nucleo-F303RE开发】也来个呼吸灯程序