打印
[STM32C0]

【STM32C092RC测评】 定时器中断驱动LED产生呼吸灯下效果

[复制链接]
464|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuyu40|  楼主 | 2025-5-20 22:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wuyu40 于 2025-5-21 19:15 编辑

#申请原创#
项目方案
在对直流电机控制时需要产生动态可调占空比的PWM波,所以这个测试就是使用周期性中断去调节占空比。
本文介绍了 Nucleo-STM32C092 开发板通过定时器中断控制LED。

使用 STM32CubeMX 创建工程,配置 TIM1、PC9和NVIC;
STM32CubeIDE 代码编译和工程调试、固件上传;
实现在中断函数中修改占空比。
工程创建
使用 STM32CubeMX 快速创建工程,开启定时器设置。

希望在PC9输出PWM波控制led或者进行电机调速,在窗口设置PC9为tim1_ch2。

为了能使用中断进行周期性修改占空比,还要配置中断,这里使用了比较中断:

生成代码,然后添加代码:
这里要注意有一条语句,HAL_TIMEx_PWMN_Start_IT(&htim1,TIM_CHANNEL_2);使能了定时器通道2,但是始终没有PWM输出,在调试中现象是定时器不断计数,也可以产生中断进一步修改占空比,但是始终没有引脚上的PWM输出;之后参考其他帖子,加上这一条语句:
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);其中有这样的语句: /* Enable the Capture compare channel */     TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);说明这个函数使能了比较输出,所以这两条都要调用,HAL_TIMEx_PWMN_Start_IT函数的注释是Starts the PWM signal generation in interrupt mode也就是说使能PWM引发的中断;接着我们添加代码到中断函数中去:
void TIM1_CC_IRQHandler(void){/* USER CODE BEGIN TIM1_CC_IRQn 0 */if(speed<40000)                 //为了方便观察可设置为全局变量{__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,speed);//设置占空比CCR2寄存器speed+=240;}else speed=0;  /* USER CODE END TIM1_CC_IRQn 0 */  HAL_TIM_IRQHandler(&htim1); }  /* USER CODE END TIM1_CC_IRQn 1 */}最后给出调试结果:


使用特权

评论回复
沙发
wuyu40|  楼主 | 2025-5-20 23:01 | 只看该作者

使用特权

评论回复
板凳
cooldog123pp| | 2025-5-21 16:05 | 只看该作者
这个应该是一个试用贴吧,可以上传视频看下效果,或者搞成gif也可以看到你呼吸的效果。

使用特权

评论回复
地板
wuyu40|  楼主 | 2025-5-21 18:12 | 只看该作者
我一看  还要传到B站,觉得太麻烦了,算了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

37

帖子

0

粉丝