STM32按键中断应用实例

发布者:和谐共存最新更新时间:2024-07-19 来源: 中断触发源关键字:STM32  按键中断  串口显示 手机看文章 扫描二维码
随时随地手机看文章

STM32按键中断(HAL库版)


本文将介绍如何使用STM32F4的IO口作为中断触发源,通过串口显示按键被按下的日志。


1.运用到的资源、工具:


1.1开发板芯片STM32F407,PI9作为外部中断源、USART3串口向屏幕传输信息


1.2编译工具:MDK-ARM V5(keil5)


1.3辅助工具:STM32CubeMX


2.硬件设计


2.1原理图:

3.软件设计


3.1STM32cubeMX配置工程文件


选择Key1作为外部中断源、选择中断触发方式为下降沿触发、并设置中断优先级分组选择优先级


使能USART3串口配置为异步通信


最后生成工程文件


3.2串口输出重定向(重写fputc函数)


int fputc(int ch, FILE *p)


{


while(!(USART3->SR & (1 << 7))); 

USART3->DR = ch;


return ch;


}

3.3在中断回调函数中,打印KEY1 DOWN


void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

{

if(GPIO_Pin == GPIO_PIN_9)

{

HAL_Delay(40);

if(HAL_GPIO_ReadPin(GPIOI, GPIO_PIN_9) == 0)

{

printf('KEY1 DOWN

');

}

}

}

4.代码及运行结果


4.1运行结果 按下KEY1、打印一次KEY1 DOWN

关键字:STM32  按键中断  串口显示 引用地址:STM32按键中断应用实例

上一篇:STM32 DCMI 的带宽与性能介绍
下一篇:STM32外设有哪些

推荐阅读最新更新时间:2024-11-08 10:13

stm32驱动TB6600控制42/57步进电机的案例(TIM中断和PWM实验)
步进电机的简单使用 接线: TB6600驱动盒的详细说明: 程序设计: 工程文件: 做毕业设计要用到57步进电机,所以花了两天时间做了一下电机函数 从淘宝查的资料: 接线如图: 接线: DIR- && PUL- 接 单片机GND DIR+ 接 PA1 PUL+ 接 PA0 驱动盒TB6600 VCC 24V 驱动盒TB6600 GND 24V的GND 我测出来的 A组(绿+蓝- ) B组(黄+红-) 如何确定AB两组看这个: 关于42步进电机驱动——基于STM32 HAL库实现 接线方法 TB6600驱动盒的详细说明: 先冲英说明: Microstep Driver 微步驱动程序 Microstep 微步
[单片机]
<font color='red'>stm32</font>驱动TB6600控制42/57步进电机的案例(TIM<font color='red'>中断</font>和PWM实验)
STM32库函数编程思路总结及其与寄存器编程的对比剖析
一、STM32库函数编程思路总结 1、基于STM32库函数的开发过程 进行具体的项目开发前,做好项目创建工作,通常包括如下步骤: (1)新建工程项目的文件夹和子文件夹(如user、output、listing等) (2)使用MDK新建(或打开项目),选择目标CPU、添加CMSIS核心、STM32启动代码和外设驱动程序,构成运行环境。 (3)添加包含main()函数的主程序文件。 (4)配置目标选项。 这些项目创建的步骤是通用的,项目构建确认无误后,可以复制整个项目文件夹的内容并保存,再次创建项目时可以直接应用(仅需适当改变项目名称等)。 通过以下步骤对项目本身流程进行分析,以明确并掌握相关外设的ST
[单片机]
<font color='red'>STM32</font>库函数编程思路总结及其与寄存器编程的对比剖析
使用Keil下载Hex文件进STM32
  前言   初学STM32时,是通过串口1把Hex文件下载进STM32的,需要一个串口模块,而且还要设置BOOT0和BOOT1电平,然后通过FlyMcu软件进行下载,这也是一种不错的方法,这里我要介绍的是使用JLink调试器和Keil MDK-ARM来下载Hex文件,无需源代码,只需要一个调试器。   所需要的工具和软件   Hex文件,如Demo_STM32.hex   Keil软件,v4或v5版本,如Keil v5.16a   ARM调试器,Jlink或ST-Link,如Jlink v9   STM32开发板,如STM32F103RET6   1.准备一个完整的工程   准备一个完整的工程,注意,这个工程的芯片型号、
[单片机]
使用Keil下载Hex文件进<font color='red'>STM32</font>
stm32学习笔记之堆栈的理解
1.堆和栈大小 定义大小在startup_stm32f2xx.s Stack_Size EQU 0x00000800 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp ; Heap Configuration ; Heap Size (in Bytes) 0x0-0xFFFFFFFF:8 ; Heap_Size EQU 0x00000800 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base 2.堆
[单片机]
<font color='red'>stm32</font>学习笔记之堆栈的理解
stm32软件触发的按键长按与短按区分
/* ------------------------------------------------------------------------------------------------ * @fn KeyCoolPressTimeHandle * * @brief 按键的检测 * * @param none * * @return none ************************************************************************************************** */ uint8_t KeyCoolPr
[单片机]
STM32单片机串口接收不定长无标志位字符串定时器判断结束
写在前面的话,以警示所有程序员。 你们或许还没有发现,随着我们深入编程领域的时间越久,我们程序员的思维越来越简单,情商也越来越低,这就是编程行业对我们自身的影响。整体跟逻辑的东西打交道,思维当然会固化。如何避免呢?想知道的话留个言,我会在下一篇博文中更新。 还要警示的是:做一个程序员的能力是有限的,一个程序员团队才可以做成大事。无论哪种语言,哪种程序,都不重要,重要的是我们的思路和逻辑,语言只是工具,不是目的! //串口1中断服务程序 void USART1_IRQHandler(void) { u8 rec_data; u8 i=0; if(USART_GetITStatus(USART1, USART_IT_RXNE
[单片机]
STM32CUBEIDE配置FreeRTOS
环境:STM32CUBEIDE 版本1.02 STM32103C8T6最小系统板 F1,1.8.0 版本固件包 新建工程,选择芯片,不多做赘述 RCC中选择时钟源为 Crytal/Ceramic Resonator SYS 中Debug 选择为 serial Write,这很重要,若选择NO debug 则在烧写一次程序后,芯片会锁住变砖。若不小心变砖了,参考这篇文章入口。 SYS 中 Timebase 不能选择为 systick ,因为FreeRTOS 会使用systick 作为时钟节拍。为了不冲突,HAL库的时基选用别的。 Middleware中选择 FreeRTOS,在interface 中选择 CMSI
[单片机]
STM32固件库SYSTEM 文件夹介绍
SYSTEM 文件夹里面的代码,此文件夹里面的代码由 ALIENTEK 提供,包含了几乎每个实验都可能用到的延时函数,位带操作,串口打印代码等。SYSTEM 文件夹下包含了 delay、 sys、 usart 等三个文件夹。分别包含了 delay.c、 sys.c、usart.c 及其头文件 delay.h,sys.h,usart.h。 delay 文件夹代码介绍 delay 文件夹内包含了 delay.c 和 delay.h 两个文件,这两个文件用来实现系统的延时功能,其中包含 3 个函数: void delay_init(u8 SYSCLK); //该函数用来初始化 2 个重要参数:fac_us 以及 fac_ms;同时把
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved