|
上一篇介绍了基本开发环境搭建,详见【STM32C0评测】1、开箱、环境搭建、按键点灯 这篇主要目的是:使用TIM1输出PWM方式,利用Nucleo-C031C6板载LED实现呼吸灯效果 STM32CubeIDE太方便了,继续使用开始工作 一、GPIO配置 1、还是先从电路图开始,板载LD4是由PA5驱动
查看数据手册,PA5可以作为TIM1_CH1输出或TIM1_CH3N(通道3反相)输出,简单点就用TIM1的通道1
2、新建Nucleo-C031C6板项目,修改配置(新建过程不详细说明) 把PA5配置为TIM1_CH1
从左边选择TIM1,按下图设置。
其中预分频系数为47(48-1),即分频后为1MHz 自动重载值为999(1000-1),程序只需控制Pulse值就能设置占空比(占空比=Pulse/(自动重载值+1))
3、生成代码 二、程序代码 红框为写的代码
初始化代码 uint16_t PWM_Value = 0; //定义循环变量,这个变量会用作控制占空比 int16_t Direction = 1; //控制方向: 1为增亮;-1为减弱. HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); //启动PWM功能 循环体内代码 HAL_Delay(50); //延时函数控制变化速度,这里设置50m改变一次占空比 PWM_Value += Direction; //如果Direction=1则亮度逐渐增加,如果为-1,亮度逐渐减弱 __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, PWM_Value*PWM_Value); //修改Pluse(也就是修改占空比),为了效果更好,每次Pulse值为PWM_Value的平方 if (PWM_Value == 31) //因为自动重载值+1 = 1000,PWM_Value的平方值不能超过(31*31=991),如果亮度达到最亮,方向变为减弱 Direction = -1; else // 如果达到最暗,方向变为增亮 if (PWM_Value == 0)
三、效果 不会上视频,上一张微亮的图
|
经验分享 | STM32CubeIDE 调试神技:条件断点与观察点,搞定长周期复现疑难杂症
STM32U5A9JDK试用---MIPI-DSI屏幕驱动
实战经验 | 使用STM32CubeIDE调试Zephyr RTOS
STM32CubeIDE 2.0.0:解耦STM32Cube MX与优化后的项目工作流程
经验分享 | 基于STM32CubeIDE的指定存储话题
【亮点速览】同步升级工具链 + 快速重置按钮 + 增量烧录!STM32CubeIDE for Visual Studio Code开发工具更新
【STM32C0评测】4、驱动Lorasx126x,实现透传
ST推出一款WiFi6&蓝牙模组
效率与探索之间:STM32CubeMX与STM32CubeAI试用有感
AI工具训练营-用ChatGPT解决HID Keyboard实现的问题
微信公众号
手机版