开发工具箱,宁波seo推广公司电话,最好看免费观看高清大全新员工,学做网站零基础这篇文章将详细介绍 cubeMX外部中断的配置#xff0c;实现过程。 文章目录 前言一、外部中断的基础知识。二、cubeMX 配置外部中断三、自动生成的代码解析四、代码实现。总结 前言
实验开发板#xff1a;STM32F103C8T6。所需软件#xff1a;keil5 #xff0c; cubeMX 。实… 这篇文章将详细介绍 cubeMX外部中断的配置实现过程。 文章目录 前言一、外部中断的基础知识。二、cubeMX 配置外部中断三、自动生成的代码解析四、代码实现。总结 前言
实验开发板STM32F103C8T6。所需软件keil5 cubeMX 。实验目的外部中断的意义cubeMX配置和实现 等 。 一、外部中断的基础知识。
对于外部中断的基础知识可以参考我之前的文章STM32 EXTI外部中断
二、cubeMX 配置外部中断
选择芯片。 配置仿真。如果不配置程序将无法下载到板子上 配置系统时钟选择 HSE , 高速时钟。 设置时钟树这里直接填写最大频率 72MHZ然后 enter 双击即可。系统自动生成相应时钟 设置工程的名字路径以及工具链。 设置自动生成 .c/.h 文件。 选择引脚设置成中断模式。PA0 接的是按键 设置上升/下降/双边沿触发选择是否上拉/下拉 电阻。 上拉/下拉 根据具体电路图确定。当电平发生变化时触发中断会调用中断回调函数。 使能中断。生成工程。
三、自动生成的代码解析
看过我之前文章的应该一眼就能看懂 cubeMX 自动生成的代码。5个步骤我再来讲解一下。
首先定义一个 GPIO_InitTypeDef 的结构体对象。 可以看到该结构包含了 引脚工作模式是否 上拉/下拉 电阻速度 。通过这个结构体就可以对各个外设进行初始化设置。 第二步 是使能 gpio 端口。 根据外设的GPIO端口来分别使能。这里按键对应的是 PA0 , 所以使能 GPIOA
__HAL_RCC_GPIOA_CLK_ENABLE();配置引脚。 就是对我们第一步 创建的结构体进行初始化。 分别 配置引脚端口号 GPIO_PIN_0 , 设置上升沿触发中断 下拉电阻。最后调用 HAL_GPIO_Init( ) 函数初始化 GPIO 。 GPIO_InitStruct.Pin GPIO_PIN_0;GPIO_InitStruct.Mode GPIO_MODE_IT_RISING;GPIO_InitStruct.Pull GPIO_PULLDOWN;HAL_GPIO_Init(GPIOA, GPIO_InitStruct);设置 优先级。 优先级分为抢占优先级子优先级。都是 值越小优先级越大。即 为0 时优先级最大。
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);也可以通过 cubeMX 配置。
使能中断。
HAL_NVIC_EnableIRQ(EXTI0_IRQn);四、代码实现。
当触发中断时会调用 中断回调函数来进行处理。 所以我们可以在 中断回调函数 中实现想要的功能即可。
/* 中断回调函数 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
}注意 我们在工程中编写代码时尽量在 类似 BEGIN 0 和 END 0 之间写这样当我们修改 cubeMX 中的配置再次生成代码时就不会将之前我们编写的代码清除。
/* USER CODE BEGIN 0 */int count 0;/* 每按下按键触发一次中断count 增加一次 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(GPIO_Pin GPIO_PIN_0){count;}
}/* USER CODE END 0 */
这里的 函数参数是某个引脚当相应引脚的按键按下时即执行里面的函数。 总结
下一篇文章为大家介绍如何不使用 cubeMX 手动写一个外部中断的程序。