使用CubMX和Proteus学习STM32单片机(六)------PWM波形产生

该博客详细介绍了如何使用CubMX配置STM32F103R4单片机的TIM模块,通过Proteus进行仿真,生成PWM波形。作者在遇到资源限制问题后,通过删除浮点运算的代码成功解决,并在不同通道上验证了20%和50%占空比的PWM波形。适合无开发板初学者进行STM32学习。
摘要由CSDN通过智能技术生成

目录

项目简介

硬件模块

软件工具

电路连接图

工作流程

程序代码

结语


项目简介

        利用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 */
}

结语

本文大部分内容都属于原创,如需转载,请附上本文网站,
如果需要相关的仿真图、程序代码等资料可以直接私信我,我会及时回复。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Runner.DUT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值