篮球组运动组任务总结(12.19-12.26)

   日期:2020-12-24     浏览:97    评论:0    
核心提示:篮球组运动组任务总结(12.19-12.26)理论学习1、stm32时钟结构,此部分内容的学习参考博文2、单片机中的中断分为外部中断和内部中断,外部中断是单片机实时处理外部事件的一种内部机制,而内部中断是一个算法指令,是由软中断指令启动的中断。当外部事件发生时,会触发外部中断,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去处理中断事件;当中断处理完后,再继续执行被中断的程序(此部分内容的学习参考B站视频)3、定时器就是一个计时的工具,可以实现加法计时和减法计时,当计时完成时,就相当于发生了一

篮球组运动组任务总结(12.19-12.26)

理论学习

1、stm32时钟结构,此部分内容的学习参考博文

2、单片机中的中断分为外部中断和内部中断,外部中断是单片机实时处理外部事件的一种内部机制,而内部中断是一个算法指令,是由软中断指令启动的中断。当外部事件发生时,会触发外部中断,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去处理中断事件;当中断处理完后,再继续执行被中断的程序(此部分内容的学习参考B站视频)

3、定时器就是一个计时的工具,可以实现加法计时和减法计时,当计时完成时,就相当于发生了一次内部事件,会触发内部中断,从而实现相应的功能(此部分内容的学习参考B站视频)

实践项目

  • 通过按键控制LED灯的亮灭,并利用定时器中断,对按键进行消抖

1、在设置芯片的界面,将按键所对应的引脚的功能设置为EXTI
2、设置中断触发条件

将中断设置为下降沿触发
3、使能相关的NVIC通道

4、编写中断服务函数

在stm32f1xx_hal_gpio.c中找到回调函数

然后在main.c文件中重写callback函数(HAL_Delay用系统滴答定时器消抖)

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == GPIO_PIN_4)
		{
			HAL_Delay(10);
			if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
				HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5);	
		}
}

*此处遇到和中断优先级相关的问题:由于之前的设置是systick的优先级和EXTI的优先级都为最高0,所以导致程序卡死;之后调低了EXIT的优先级为1就解决了问题

5、成果展示

VID_20201223_004551

  • 利用定时器,实现呼吸灯的效果
    想要用一个led实现呼吸灯的效果,这个led所对应的引脚必须有定时的功能(如下图TIM3_CH2)


设置定时器

代码编写:

启动pwm

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2)

呼吸灯代码

		while(pwm_value < 1000)
		{
			pwm_value++;
			__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,pwm_value);
			HAL_Delay(1);
		}
		while(pwm_value)
		{
			pwm_value--;
			__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,pwm_value);
			HAL_Delay(1);
		}

成果展示

VID_20201223_004552

思考题

1、HAL库中的GPIOB指的就是PB引脚,如(GPIOB,GPIO_PIN_1)指的就是PB1引脚

2、.h文件是.c文件的头文件,在.c文件中用#include<xxx.h>进行预处理

3、我还不清楚HAL_Delay这种去抖方法是延时去抖还是定时器去抖,因为这个函数用的好像就是systick定时器进行计时然后延时一定的时间进行消抖的

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

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

13520258486

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

24小时在线客服