概述本篇文章主要介绍如何使用stm32cubemx输出pwm,并制作呼吸灯效果。
硬件准备首先需要准备一个开发板,这里我准备的是nucleo-f030r8的开发板:
在这里插入图片描述
选择芯片型号
在这里插入图片描述
配置时钟源hse与lse分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择disable选项,如下所示:
在这里插入图片描述
配置时钟树stm32f0的最高主频到48m,所以配置48即可:
在这里插入图片描述
pwm配置本次实验使用的是tim3的通道1来输出pwm波,选择时钟,并且选择通道1的pwm模式。
在这里插入图片描述
配置pwm波的参数
在这里插入图片描述
pwm频率计算如下所示
在这里插入图片描述
在上面配置tim3参数,预分频系数设置为48-1, 自动重载值设置为1000-1,那么pwm频率为48,000,000/((48-1+1)*(1000-1+1))=1000hz,即1khz。
注意载芯片示意图上会看到下图pa6就是tim3的通道1pwm波输出口。
在这里插入图片描述
生成工程设置注意在生产工程设置中不能出现中文,不然会报错。
在这里插入图片描述
代码生成设置最后设置生成独立的初始化文件:
在这里插入图片描述
生成代码
在这里插入图片描述
配置keil
在这里插入图片描述
代码在main.c中,先定义两个变量存储设置的占空比和模式
/* user code begin 1 */uint16_t pwm_i =0;//占空比uint16_t pwm_mode =0;//呼吸灯模式,1为增加,2为减少 /* user code end 1 */使能tim3的pwm channel1 输出。
/* user code begin 2 */ //使能tim3的pwm channel1输出。 hal_tim_pwm_start(&htim3,tim_channel_1); /* user code end 2 */然后在while(1)中改变pwm_i的值,来实现呼吸效果。
/* user code begin while */ while (1) { if(pwm_mode) { __hal_tim_set_compare(&htim3, tim_channel_1, pwm_i--); if(pwm_i==0) pwm_mode=0; } else { __hal_tim_set_compare(&htim3, tim_channel_1, pwm_i++); if(pwm_i==1000) pwm_mode=1; } hal_delay(1); /* user code end while */ /* user code begin 3 */ } /* user code end 3 */演示效果
在这里插入图片描述
常见的nb_iot/emtc/lora物联网无线技术对比
PFC驱动电路的工作原理
基于GPRS网络和RFIC卡的分布式考勤管理系统设计
联创电子三款镜头通过Mobileye认证,车载镜头月产能最大达800K
微软双屏设备Surface Neo和Surface Duo上市推迟
STM32CUBEMX(1)--PWM
魅族X8曝光采用了手势操作和虚拟按键两套操控方案
探秘面向5G承载的以太网带宽演进
SSL2103设计的可调光LED照明技术
研华第四代NVMe SSD超耐久解决方案:SQF930&SQF ER-1产品 工业宽温,强力散热,高效能!
精神压力检测器!只需要一滴体液即可用来监测压力水平
rt-thread 驱动篇(八)hwtimer 重载算法优化
意法半导体推出全新STM8L EnergyLite͐
集成无源器件在微模块SIP中的应用
Cube家族又迎来了两位新成员:I-CUBE-Aliyun和I-CUBE-GizWits
机器视觉传感器简介
华为智能音箱Sound X新发布,最新搭载帝瓦雷单元
控制DS26528和DS26524的发送脉冲
中航光电推出高可靠的快速安装光纤连接器
GITEX Global 2023 | 华为智能云网,加速行业智能化