8、stm32按键板级支持包增加EXTI功能

参考链接

16. EXTI—外部中断/事件控制器 — [野火]STM32 HAL库开发实战指南——基于F103系列开发板 文档 (embedfire.com)icon-default.png?t=N7T8https://doc.embedfire.com/mcu/stm32/f103/hal_general/zh/latest/doc/chapter17/chapter17.html【经验分享】STM32F103:外部中断(EXTI)——原理和程序 - STM32团队 ST意法半导体中文论坛 (stmicroelectronics.cn)icon-default.png?t=N7T8https://shequ.stmicroelectronics.cn/thread-634638-1-1.html

前文链接

五、构建按键板级支持包-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/sevendecsdn/article/details/140569832

STM32CubeMX配置

两个按键引脚都选择GPIO_EXTIx功能。GPIO模式有6种选择,分别是上升沿触发中断、下降沿触发中断、上/下沿都触发中断、上升沿触发事件、下降沿触发事件、上/下都触发事件,这里选择前3种任意中断触发方式都可以。

RCC配置就简单了,当前RCC怎么配置都不影响,输入喜欢的频率敲一下回车就行了,不配置也没有问题。

keil编程

为了方便移植,按照之前的方法,将main.h中关于按键的定义复制替换到bd_key.h中;在gpio.c文件中找到MX_GPIO_Init()函数,全部复制到bd_key.c文件中将名字改为KEY_EXTI_Init()再声明一下就完成了。完整代码附上:

【免费】4.bd-stm32f103-exti.zip资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/sevendecsdn/89562862

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,具有丰富的外设和强大的计算能力,常用于嵌入式系统和物联网等领域。最小系统板是一种含芯片、晶振、电源等最基本元件的电路板,可用于开发和测试STM32F103C8T6芯片的基本功能。 使用按键清零数值通常是指通过按下按键,将某个变量或寄存器的值清零。具体的实现方法可能因不同的应用场景而有所不同。在STM32F103C8T6最小系统板中,通常需要将按键连接到芯片的GPIO口,并设置相应的中断服务函数来处理按键事件。 下面是一种使用按键清零数值的示例代码: ```c #include "stm32f10x.h" int value = 0; void EXTI0_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line0) != RESET) { value = 0; EXTI_ClearITPendingBit(EXTI_Line0); } } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); while (1) { // do something } } ``` 以上代码中,我们首先初始化了GPIO口和外部中断,并设置了对应的中断服务函数。在中断服务函数中,我们将value变量赋值为0,并清除对应的中断标志位。在主循环中,我们可以根据需要对value变量进行操作。当按下按键时,中断服务函数会被调用,并将value变量清零,从而实现了使用按键清零数值的功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值