|
本帖最后由 与龙共舞 于 2018-5-2 15:24 编辑 硬件准备: PB8低电平则LED1亮起,现在PB8用于TIM4CH3 硬件原理图:
GPIO管脚图:
数学准备: 呼吸的的函数图用MATLAB生成,两个指数函数拼接,亮度全开的时候变化快。
软件准备:
对生成的代码修改: 第一步:main死循环前加 HAL_TIM_Base_Start_IT(&htim4); HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3); 第二步:main.c最后实现函数
第三步:全局变量数组 uint8_t indexWave[] = {1,1,2,2,3,4,6,8,10,14,19,25,33,44,59,80,107,143,191,255, 255,191,143,107,80,59,44,33,25,19,14,10,8,6,4,3,2,2,1,1}; 第四步:修改初始化的PWM初始值(可要可不要) 全部逻辑就是:设置定时器,更新的时候触发中断做一件事。 这个事就是修改PWM寄存器的值。
+++++++++++++++实际测试了一下 效果不是很好 我的板子是低电平亮灯 修改一下为定时器初始化 sConfigOC.OCMode = TIM_OCMODE_PWM2可以获得想要的效果+++++++++++++++ ++++简化逻辑:设置定时器--打开定时器---更新的时候触发中断做一件事--这个事情自己定义,在回调函数中写(类似滴答定时器weak的回调函数)++++
此时在看文章:http://blog.csdn.net/anchises/article/details/52101512 神清气爽
|
PWM.zip
下载8.65 MB, 下载次数: 18
工程
微信公众号
手机版
没有的 实际这个效果看起来 还不如sin函数好