STM32按键扫描/按键中断/外部中断

接触STM32有一段时间了,也算是简单入了门,但由于一些原因,今天才来写本应该是入门级的按键相关程序,分为扫描模式和中断模式


MCU:STM32F334C8

1.扫描模式

首先配置按键引脚为上拉输入模式,根据原理图按键接PA0,按键没有按下的时候引脚输入为低电平0,按键按下输入高电平1,松开又回到低电平0

然后在死循环中不断读取相应引脚的输入状态,并根据返回结果判断按键是否按下,做出相应处理

下面的代码完成的功能是:按键第一次按下,点亮灯,再按一次,熄灭,重复。

#include "Userkey.h"

u8 flag=0;

void key_GPIO_Config(void)
{
	GPIO_InitTypeDef      GPIO_InitStructure;

	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	

	GPIO_Init(GPIOA,&GPIO_InitStructure);
}

void key_scanmode(void)
{
	key_GPIO
根据提供的引用内容,以下是一个可能的STM32矩阵按键外部中断扫描代码的示例: ```c #include "stm32f4xx.h" char xianshi\[5\]\[5\]={{'(', '/', '', '-', '+'}, {')', '3', '2', '1', 0}, {'6', '5', '4', '0', 0}, {10, '9', '8', '7', 0}, {'=', '.', '0', 11, 12}}; void EXTI0_IRQHandler(void) { // 处理外部中断0的中断事件 // 获取键值 int rowflag = 0; int colflag = 0; int key_value = xianshi\[rowflag\]\[colflag\]; // 处理键值 // ... // 清除中断标志位 EXTI_ClearITPendingBit(EXTI_Line0); } void EXTI1_IRQHandler(void) { // 处理外部中断1的中断事件 // 获取键值 int rowflag = 1; int colflag = 0; int key_value = xianshi\[rowflag\]\[colflag\]; // 处理键值 // ... // 清除中断标志位 EXTI_ClearITPendingBit(EXTI_Line1); } // 其他外部中断处理函数的定义... int main(void) { // 初始化外部中断 // ... while (1) { // 执行其他任务 // ... } } ``` 请注意,这只是一个示例代码,具体的实现可能会根据具体的硬件和需求有所不同。建议参考STM32的官方文档和相关资料来编写适合自己的代码。 #### 引用[.reference_title] - *1* *2* *3* [stm32vet6外部中断扫描矩阵键盘](https://blog.csdn.net/weixin_43720264/article/details/97813435)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值