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

篮球组运动组任务总结(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定时器进行计时然后延时一定的时间进行消抖的

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值