STM32中断原理,HAL库函数开发

本文介绍了如何使用STM32cubeMX下载STM32F103C8进行LED流水灯编程,并演示了如何实现外部中断控制LED灯的实验,包括设置中断、编写回调函数及处理宏定义。
摘要由CSDN通过智能技术生成

一、下载使用stm32cubeMX,完成LED流水灯作业

1、stm32cubeMX下载(stm官网下载)
在这里插入图片描述
在这里插入图片描述
2、安装完成后进入stm32cubeMX选择新工程,选择stm32f103c8芯片
端口设置:
在这里插入图片描述
RCC
在这里插入图片描述
SYS
在这里插入图片描述
点击Project manager,在工具链接Toolchain选择MDK-ARM然后 点击右上角GENERATECODE创建Keil文件
在这里插入图片描述
3、点击中间open project 进入keil工程里,
找到main.c中的while(1)循环,其中的代码需要自行添加,
在这里插入图片描述

    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);  // 灯1亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // 灯1灭
	  
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);  // 灯2亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);  // 灯2灭
	  
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);  // 灯3亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);  // 灯3灭


在这里插入图片描述
4、然后直接烧录运行
在这里插入图片描述

](https://img-blog.csdnimg.cn/ace05ae77ab2428ab76e8e9284cee3e3.gif)

在这里插入图片描述

二、利用stm32cubeMX实现外部中断控制led实验

1、cube端口
GPIO
在这里插入图片描述
RCC
在这里插入图片描述
SYS
在这里插入图片描述
NVIC
在这里插入图片描述
A1端口输出低电平,A7端口输出高电平,A4端口连接LED,PB5选取为中断控制接口
在工程管理页面勾选
在这里插入图片描述

在这里插入图片描述
2、创建生成keil工程文件

在这里插入图片描述
找到stm32f1xx_hal_gpio.c文件,将HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)函数添加进去

 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
	{
      if(GPIO_Pin == SWITCH_Pin)
				{
       
        GPIO_PinState pinState = HAL_GPIO_ReadPin(SWITCH_GPIO_Port,SWITCH_Pin);

        
        if(pinState==GPIO_PIN_RESET)
        HAL_GPIO_WritePin(LED_A4_GPIO_Port,LED_A4_Pin,GPIO_PIN_RESET);
        
        else
            HAL_GPIO_WritePin(LED_A4_GPIO_Port,LED_A4_Pin,GPIO_PIN_SET);
        }
  }

在这里插入图片描述
直接添加会有报错说明:未定义的变量名,这是因为在cube端口设置中对A4端口和PB5端口设置了别名,解决方法如下:
在main.c文件目录下找到main.h 文件,找到其中的宏定义

#define LED_A4_Pin GPIO_PIN_4
#define LED_A4_GPIO_Port GPIOA
#define SWITCH_Pin GPIO_PIN_5
#define SWITCH_GPIO_Port GPIOB
#define SWITCH_EXTI_IRQn EXTI9_5_IRQn

在这里插入图片描述
将其复制粘贴到stm32f1xx_hal_gpio.c文件的main函数之前
在这里插入图片描述
再删掉重复定义的代码段即可。
3、生成hex文件,烧录并运行
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值