STM32
登录
直播中
王雪
7年用户
917经验值
私信
关注
[问答]
请问STM32按键如何控制LED灯?
开启该帖子的消息推送
STM32
单片机
中的事件和中断是什么?它们之间有什么区别?
请问
STM32
按键如何控制LED灯?
回帖
(1)
张一珠
2021-9-27 16:23:19
一:理论学习
1.了解STM32时钟结构
(已掌握)
在 STM32 中,有五个时钟源,为 HSI、HSE、LSI、LSE、PLL。从时钟频率来分可以分为 高速时钟源和低速时钟源,在这 5 个中 HIS,HSE 以及 PLL 是高速时钟,LSI 和 LSE 是低速时 钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时 钟源,其中 HSE 和 LSE 是外部时钟源,其他的是内部时钟源。
①、HSI 是高速内部时钟,RC 振荡器,频率为 8MHz。 ②、HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz。 我们的开发板接的是 8M 的晶振。 ③、LSI 是低速内部时钟,RC 振荡器,频率为 40kHz。独立看门狗的时钟源只能是 LSI,同 时 LSI 还可以作为 RTC 的时钟源。 ④、LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。这个主要是 RTC 的时钟源。 ⑤、PLL 为锁相环倍频输出,其时钟输入源可选择为 HSI/2、HSE 或者 HSE/2。倍频可选择为
2~16 倍,但是其输出频率最大不得超过 72MHz。
配置时钟参数可以通过软件STM32CubeMX直接配置,也可以在MDK5里面通过调用时钟设置函数进行配置。
2.了解单片机中的事件和中断是什么,弄清它们之间的区别
(基本掌握)
单片机中断是指CPU在正常执行程序的过程中,由于计算机内部或外部发生了另一事件(如定时时间到,超压报警等),请求CPU迅速去处理,CPU暂时停止当前程序的运行,而转去处理所发生的事件。中断属于正常现象。
事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件,等等。当MCU系统外设满足了一定的条件,改变了相应的状态标志位,这时候就认为发生了某个事件。
事件与中断事件是包含关系,即事件可分为中断事件或非中断事件。中断事件是一种可以导致中断发生的事件。中断则是因为中断事件的发生而导致的后续行为过程,因此中断一定有一个对应的事件,但一个事件不一定对应一个中断。从外部激励信号来看,中断和事件的产生源都可以是一样的。之所以分成2个部分,由于中断是需要CPU参与的,需要软件的中断服务函数才能完成中断后产生的结果;但是事件,是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件产生的结果。
3.理解中断优先级
(基本理解)
STM32 将中断分为 5 个组,组 0-4。该分组的设置是由SCB->AIRCR寄存器的bit10-8来定义的。具体的分配关系如下:
4.了解STM32的定时器,并学习定时器的基本结构和功能
(不是很懂定时器的使用)
STM32F1系列的定时器可以分为3类:
1)高级定时器(TIM1,TIM8):16 位向上、向下、向上/向下自动装载计数器,可以产生DMA请求,有4组捕获/比较通道输出互补PWM信号;
2)通用定时器(TIM2~TIM5):16 位向上、向下、向上/向下自动装载计数器,可以产生DMA请求,有4组捕获/比较通道输出PWM信号但不能输出互补PWM信号;
3)基本定时器(TIM6,TIM7):16 位向上、向下、向上/向下自动装载计数器;
定时器的计数频率公式:
TIMx_CLK = CK_INT / (TIM_Prescaler + 1)
其中:TIMx_CLK ——定时器的计数频率
CK_INT——内部时钟源频率(APB1的倍频器送出时钟)
TIM_Prescaler——用户设定的预分频系数,取值范围0~65535
二:实践项目
1.通过按键控制LED灯的亮灭,并利用定时器中断,对按键进行消抖
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_5)
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_5)==0)
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8);
}
}
2.利用定时器,实现呼吸灯的效果(选做)
定时器使用内部时钟
使能定时器
重写定时器中断回调函数
启动定时器
一:理论学习
1.了解STM32时钟结构
(已掌握)
在 STM32 中,有五个时钟源,为 HSI、HSE、LSI、LSE、PLL。从时钟频率来分可以分为 高速时钟源和低速时钟源,在这 5 个中 HIS,HSE 以及 PLL 是高速时钟,LSI 和 LSE 是低速时 钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时 钟源,其中 HSE 和 LSE 是外部时钟源,其他的是内部时钟源。
①、HSI 是高速内部时钟,RC 振荡器,频率为 8MHz。 ②、HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz。 我们的开发板接的是 8M 的晶振。 ③、LSI 是低速内部时钟,RC 振荡器,频率为 40kHz。独立看门狗的时钟源只能是 LSI,同 时 LSI 还可以作为 RTC 的时钟源。 ④、LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。这个主要是 RTC 的时钟源。 ⑤、PLL 为锁相环倍频输出,其时钟输入源可选择为 HSI/2、HSE 或者 HSE/2。倍频可选择为
2~16 倍,但是其输出频率最大不得超过 72MHz。
配置时钟参数可以通过软件STM32CubeMX直接配置,也可以在MDK5里面通过调用时钟设置函数进行配置。
2.了解单片机中的事件和中断是什么,弄清它们之间的区别
(基本掌握)
单片机中断是指CPU在正常执行程序的过程中,由于计算机内部或外部发生了另一事件(如定时时间到,超压报警等),请求CPU迅速去处理,CPU暂时停止当前程序的运行,而转去处理所发生的事件。中断属于正常现象。
事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件,等等。当MCU系统外设满足了一定的条件,改变了相应的状态标志位,这时候就认为发生了某个事件。
事件与中断事件是包含关系,即事件可分为中断事件或非中断事件。中断事件是一种可以导致中断发生的事件。中断则是因为中断事件的发生而导致的后续行为过程,因此中断一定有一个对应的事件,但一个事件不一定对应一个中断。从外部激励信号来看,中断和事件的产生源都可以是一样的。之所以分成2个部分,由于中断是需要CPU参与的,需要软件的中断服务函数才能完成中断后产生的结果;但是事件,是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件产生的结果。
3.理解中断优先级
(基本理解)
STM32 将中断分为 5 个组,组 0-4。该分组的设置是由SCB->AIRCR寄存器的bit10-8来定义的。具体的分配关系如下:
4.了解STM32的定时器,并学习定时器的基本结构和功能
(不是很懂定时器的使用)
STM32F1系列的定时器可以分为3类:
1)高级定时器(TIM1,TIM8):16 位向上、向下、向上/向下自动装载计数器,可以产生DMA请求,有4组捕获/比较通道输出互补PWM信号;
2)通用定时器(TIM2~TIM5):16 位向上、向下、向上/向下自动装载计数器,可以产生DMA请求,有4组捕获/比较通道输出PWM信号但不能输出互补PWM信号;
3)基本定时器(TIM6,TIM7):16 位向上、向下、向上/向下自动装载计数器;
定时器的计数频率公式:
TIMx_CLK = CK_INT / (TIM_Prescaler + 1)
其中:TIMx_CLK ——定时器的计数频率
CK_INT——内部时钟源频率(APB1的倍频器送出时钟)
TIM_Prescaler——用户设定的预分频系数,取值范围0~65535
二:实践项目
1.通过按键控制LED灯的亮灭,并利用定时器中断,对按键进行消抖
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_5)
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_5)==0)
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8);
}
}
2.利用定时器,实现呼吸灯的效果(选做)
定时器使用内部时钟
使能定时器
重写定时器中断回调函数
启动定时器
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
请问
一下
STM32
F407ZE是怎样通过
按键
去
控制
LED
灯
的
2021-11-25
1719
请问
STM32
F407VET6怎么实现
按键控制
LED
灯
状态?
2021-11-18
1113
请问
一下
STM32
按键
是如何
控制
LED
灯
的
2021-10-14
1491
如何利用
STM32
实现
按键控制
LED
灯
?
2021-11-25
1841
基于
STM32
CUBEMX+MDK5的
按键
是如何去
控制
LED
灯
的
2021-11-18
761
如何使用
STM32
固件库通过
按键
来
控制
led
灯
的亮灭?
2021-11-23
932
请问
按键
中断key如何实现
控制
led
灯
?
2021-11-17
639
请问
STM32
按键
输入如何
控制
LED
/蜂鸣器?
2021-11-25
853
萌新求助,求
stm32
使用外部中断
按键控制
led
灯
的代码
2021-11-17
932
STM32
单片机是如何实现
按键控制
LED
灯
设计的
2021-11-25
1251
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分