当前位置:网站首页>Proteus仿真stm32f103R6Tx——外部中断控制LED亮灭(Cube MX+Keil5+proteus)

Proteus仿真stm32f103R6Tx——外部中断控制LED亮灭(Cube MX+Keil5+proteus)

2022-06-10 04:36:00 Drawing Ting

前言

为了熟悉使用proteus相关操作并结合HAL库进行代码编写,本文介绍通过外部中断控制LED亮灭,以及自己在探索阶段出现的一些问题与相关解决资料。部分基础操作与上一篇Proteus基础操作介绍基础部分介绍相同,本文将略去。如有表述不妥之处,还望指正。

Cube MX配置

SYS、RCC、Clock Configuration部分配置不再赘述

GPIO

PA1、PA2设置中断EXIT,下降沿Falling Edge,上拉电阻(Pull up)
PA4、PA5连接两个LED
在这里插入图片描述

NVIC

开启中断,如果不需要用到HAL-Delay等优先级会发生冲突的函数,则不需要设置此处优先级。
在这里插入图片描述

Keil5 代码编写

main.h

宏定义待设置端口位

/* Private defines -----------------------------------------------------------*/
/* USER CODE BEGIN Private defines */
#define key1_GPIO_Pin GPIO_PIN_1
#define key2_GPIO_Pin GPIO_PIN_2

/* USER CODE END Private defines */

gpio.c

/* USER CODE BEGIN 2 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    
	switch(GPIO_Pin)
	{
    
		case GPIO_PIN_1://进入PA1按键触发的中断
			HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_4);break;//翻转PA4电平,LED由亮变灭或反之
		case GPIO_PIN_2://进入PA2按键触发的中断
			HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);break;//翻转PA5电平,LED由亮变灭或反之
		default:break;
	}
}

/* USER CODE END 2 */

proteus仿真

原理图如下
在这里插入图片描述
按下第一个开关,D1灭
在这里插入图片描述
再按一次:重新D1亮起。
在这里插入图片描述

另一个按键也能实现同样的功能。

其他可能的疑问

proteus电路仿真设计图中很多器件之间没有实线连线,它们是怎么实现的?
上拉电阻与下拉电阻有什么作用

原网站

版权声明
本文为[Drawing Ting]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_65489379/article/details/125131872