定时器&PWM应用编程

本文详细介绍了如何在STM32F103上使用Tim2和Tim3定时器控制LED实现2s周期亮灭,以及如何切换到PWM模式制作呼吸灯效果。还展示了如何通过定时器的另一个通道捕获PWM信号,测量周期和脉宽,并将数据发送到串口。
摘要由CSDN通过智能技术生成

深入了解STM32定时器原理,掌握脉宽调制pwm生成方法。


一、使用STM32F103的 Tim2~Tim5其一定时器的某一个通道pin(与GPIOx管脚复用,见下图),连接一个LED,用定时器计数方式,控制LED以2s的频率周期性地亮-灭。

1.打开STM32CubeMX,创建工程
在这里插入图片描述
进入工程后,配置rcc
在这里插入图片描述
配置sys
在这里插入图片描述
PA0口选为GPIO-OUTPUT
在这里插入图片描述
配置定时器
如图所示,定时器2配置:依次点击位置2,选中定时器2;位置3,配置定时器2的时钟源为内部时钟;位置4,分频系数为71;位置5,向上计数模式,计数周期为5000,使能自动重载模式。

在这里插入图片描述
在这里插入图片描述
配置中断,并生成定时器优先级代码
在这里插入图片描述
在这里插入图片描述
配置usart
在这里插入图片描述
配置时钟
在这里插入图片描述
点击project manager
在这里插入图片描述
在这里插入图片描述
打开生成的keil文件中的main.c
在这里插入图片描述
添加启动定时器代码

HAL_TIM_Base_Start_IT(&htim2);
	HAL_TIM_Base_Start_IT(&htim3);

在这里插入图片描述
在main.c中定义STM32需要给上位机发送的消息

uint8_t hello[20]="hello windows!\r\n";

在这里插入图片描述
添加中断回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
   
	static uint32_t time_cnt =0;
	static uint32_t time_cnt3 =0;
	if(htim->Instance == TIM2)
	{
   
		if(++time_cnt >= 400
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值