首页 > 其他分享 >stm32f103zet红牛开发板STMcubeMX hal库版:04旺宝-红牛-按键中断 EXIT

stm32f103zet红牛开发板STMcubeMX hal库版:04旺宝-红牛-按键中断 EXIT

时间:2022-09-06 00:34:01浏览次数:90  
标签:hal 04 Pin 中断 按键 GPIO 红牛

实验目的:给按键的下降沿设置中断事件来控制led、

实验现象:程序运行后,按下USER1,LED1亮,再按USER1,LED1灭.

在针脚上选exit

 

选下降沿中断

 

不修改优先级

 

在main.c里加入回调函数。这个函数会覆盖库里边的同名空函数

/**
  * 函数功能: 按键外部中断服务函数
  * 输入参数: GPIO_Pin:中断引脚
  * 返 回 值: 无
  * 说    明: 无
  */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  if(GPIO_Pin==USER1_Pin)
  {
     HAL_Delay(20);//使用这个必须降低EXIT的中断抢先级别
     //for(int i=0; i<100000;i++){}
     if (HAL_GPIO_ReadPin(USER1_GPIO_Port,USER1_Pin)==0) {
          LED_Toggle(1);

        }
      

    
    __HAL_GPIO_EXTI_CLEAR_IT(USER1_Pin);
  }
  
}

 

 发现使用hal-delay会卡死程序。原因hal-delay用的是systemtic的中断。这里俩中断优先顺序一样了、并且cubeMX并不会自动生成它的优先级代码。默认就是最高级别0

解决办法 1  使用空循环延时

2 把exit的中断级别往下降。

 

标签:hal,04,Pin,中断,按键,GPIO,红牛
From: https://www.cnblogs.com/kyo413/p/16660224.html

相关文章

  • Day04表格标签
    表格为什么使用表格?简单通明,结构稳定基本结构:单元格行列跨行跨列<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>表格学习</ti......
  • PAT Advanced 1041 Be Unique(20)
    题目描述:BeinguniqueissoimportanttopeopleonMarsthateventheirlotteryisdesignedinauniqueway.Theruleofwinningissimple:onebetsonanumbe......
  • HAl层
     ......
  • 1048. 最长字符串链
    给出一个单词数组 words ,其中每个单词都由小写英文字母组成。如果我们可以 不改变其他字符的顺序 ,在wordA 的任何地方添加恰好一个字母使其变成 wordB ,那么我们......
  • leetcode 104. Maximum Depth of Binary Tree 二叉树的最大深度(简单)
    一、题目大意给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,......
  • ubuntu1804 pixel xl 编译安装lineage-18.1
    官方文档https://wiki.lineageos.org/devices/marlin/build下载源码repoinit-uhttps://github.com/LineageOS/android.git-blineage-18.1reposync-c此处需要梯......
  • vue3——readonly 与 shallowReadonly
    readonly:让一个响应式数据变为只读的(深只读)。shallowReadonly:让一个响应式数据变为只读的(浅只读,只读第一层)。isReadonly:判断一个数据是不是只读数据应用场景:......
  • Flask 学习-47.Flask-RESTX 自定义响应内容marshal_with
    前言Flask-RESTX提供了一种简单的方法来控制您在响应中实际呈现的数据或期望作为输入有效负载的数据。使用该fields模块,您可以在资源中使用所需的任何对象(ORM模型/自定......
  • vue3——shallowReactive 与 shallowRef
    shallowReactive:只处理对象最外层属性的响应式(浅响应式)。shallowRef:只处理基本数据类型的响应式,不进行对象的响应式处理。什么时候使用?如果有一个对象数据,结......
  • 实战 20220904笔记本1
                                  ......