| 项目简介 利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第六部分针对STM32单片机内置tiM模块的PWM波形产生的学习和理解。 硬件模块 STM32F103R4 示波器 软件工具 CubMX Proteus KEIL 电路连接图 ![]() 工作流程 首先,在CubMX种设置号一些参数,选择TIM1定时器,按下图设置好工作模式。输出PWM的引脚是PB15引脚。 ![]() 然后再按下图设置好预分频和计数值 ![]() 最好设置好占空比,占空比=Pulse/Per,比如想要设置占空比为20%,而上面设置了计数值为1000,那么按照这个占空比,就照下图设置好Pulse为200即可。 ![]() 然后生成工程。 增加输出PWM的代码。 ![]() 出现问题了,上网查了一下好像是超出了单片机内部的资源。网上推荐的方法是直接换一个型号的32单片机,但是我不想用这种方法,后来我删掉一行有浮点运算的printf函数就可以了,可能是printf用的太多了,太占内存。可以运行了,但是一开始还是没有PWM波形输出,于是我换了个通道,如下图。 ![]() ![]() Prescaler:分频值,可以设置为0 Counter Mode:计数模式 Counter Period:自动装载值 Auto-reload preload:使能自动装载功能 ![]() Mode:PWM波模式 Pulse:计数比较值 CH Polarity:输出极性 输出的结果如下图,这是20%的 ![]() 然后改变占空比为50% ![]() 输出波形 ![]() 至此,PWM模块完成。 程序代码 mian.c int main(void){ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash inteRFace and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init();// MX_ADC1_Init(); // MX_USART1_UART_Init(); MX_TIM1_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */; HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);//开启PWM波形输出 __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 500); //改变占空比,500/1000=50% while(1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */} 结语本文大部分内容都属于原创,如需转载,请附上本文网站, 如果需要相关的仿真图、程序代码等资料可以直接私信我,我会及时回复。 |
[经验]使用CubMX和Proteus学习STM32单片机(六)------PWM波形产生
关键词: 使用 CubMX Proteus 学习 STM32
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
我要赚赏金打赏帖 |
|
|---|---|
| Chaos-nano:专为低资源单片机设计的轻量级协作式异步操作系统(ATMEGA328P轻量级操作系统)—— 详细介绍被打赏¥16元 | |
| FPGA配置被打赏¥10元 | |
| Chaos-nano协作式异步操作系统:赋能MicrochipAVR8位单片机的革新之路被打赏¥15元 | |
| 基于esp32开发时串口工具的注意点被打赏¥24元 | |
| 基于FireBeetle2ESP32-C5开发板的舵机控制被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】MAX78000开发板制作的电子相册被打赏¥32元 | |
| 基于FireBeetle2ESP32-C5开发板的超声波测距及显示被打赏¥21元 | |
| FireBeetle2ESP32-C5上RTC电子时钟的实现被打赏¥25元 | |
| 【分享开发笔记,赚取电动螺丝刀】MAX78000开发板读取SD卡被打赏¥23元 | |
| 【S32K3XX】Standby RAM 重启后数据异常问题调查被打赏¥38元 | |











我要赚赏金
