STM32开发入门(三)——呼吸灯

   日期:2021-02-03     浏览:176    评论:0    
核心提示:stm32性能强大,但其开发难度又显著高于Arduino等单片机。本文将通过“呼吸灯”程序,介绍stm32中PWM方波的产生及中断函数的应用。往期回顾STM32开发入门(一)——流水灯https://blog.csdn.net/m0_51908955/article/details/113528296STM32开发入门(二)——Hello Worldhttps://blog.csdn.net/m0_51908955/article/details/113529909软件Keil 5(单片机集

stm32性能强大,但其开发难度又显著高于Arduino等单片机。本文将通过“呼吸灯”程序,介绍stm32中PWM方波的产生及中断函数的应用。

往期回顾

STM32开发入门(一)——流水灯
https://blog.csdn.net/m0_51908955/article/details/113528296
STM32开发入门(二)——Hello World
https://blog.csdn.net/m0_51908955/article/details/113529909

软件

  • Keil 5(单片机集成开发环境)
  • STM32CubeMX(自动配置stm32编程的相关文件)
  • FLYMCU(stm32串口下载软件,也可用ST-LINK代替)
  • XCOM(串口监视器)

准备

GPIO、RCC、SYS的配置、生成文件的方法详见往期。
打开“Clock Configuration”,将时钟配置改为如下图所示,此时的时钟频率为72MHz。

打开“Timers”中的“TIM2”,设置“Clock Source”为“Internal Clock”。点击下方的“Parameter Settings”,设置第一项为72,第三项为10000。打开“NVIC Settings”,勾选“Enabled”。(更严谨的写法为72-1和 10000-1,此处不深入探讨)

设置的具体含义:
第一项:分频设置。时钟的原本频率是72MHz,我们可以将其分为72份,每个为1MHz。
第三项:上限设置。计数上限为10000。溢出后将执行一次中断函数,并从头计数。
由于频率为1MHz,计数上限为10000,所以在1s内会执行100次中断函数,这样我们就得到了一个时差为10ms的中断函数。

打开“Timers”中的“TIM3”,设置“Clock Source”为“Internal Clock”。选择“Channel”为“PWM Generation CH1”。点击下方的“Parameter Settings”,设置第一项为72,第三项为1000(更严谨的写法同上)。设置“Pulse”为500。打开“NVIC Settings”,勾选“Enabled”。

Pulse:占空比。500:表示500/1000=50%,产生一个占空比为50%,频率为1kHz的方波。这个参数也可以在程序中进行调节。


在右图中找到输出方波的引脚(以实际型号为准),生成文件。

代码

打开keil,在之间插入下列代码:


  HAL_TIM_Base_Start_IT(&htim2);
	//初始化定时器
	HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
	//初始化PWM输出

在在之间(约为250-300行处)插入下列代码:


int duty=0;
int flag=0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
//定时器中断函数,按照刚才的配置每10ms会进入此函数一次
{ 
	if(htim->Instance == htim2.Instance)
	{ 
		if(flag==0)
		{ 
			duty+=10;//方波占空比增大,表现为灯变暗
			if(duty>=1000)
				flag=1;//转换状态
		}
		else if(flag==1)
		{ 
			duty-=10;//方波占空比减小,表现为灯变亮
			if(duty<=0)
				flag=0;//转换状态
		}
		__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,duty);//设置方波比占空的函数
	}
}


编译上传代码,并按下开发板的“Reset”按键,观察现象。

实验效果

stm32-呼吸灯

备注

本实验也可以不引入中断函数,但中断函数具有计时更加精准的特点,在自动控制程序中有重要的应用,stm32初学者应力求掌握。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服