目录
- 前言
- Cube MX配置
-
-
- GPIO
- NVIC
-
- Keil5 代码编写
-
-
- main.h
- gpio.c
-
- proteus仿真
- 其他可能的问题
前言
熟悉使用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://进入PA中断按钮触发 HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_4);break;//翻转PA4电平,LED由亮变灭或反之亦然 case GPIO_PIN_2://进入PA中断按钮触发 HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);break;//翻转PA5电平,LED由亮变灭或反之亦然 default:break; } } /* USER CODE END 2 */
proteus仿真
开关,D1灭
其他可能的问题
proteus如何实现电路仿真设计图中许多器件之间没有实线连接? 上拉电阻和下拉电阻有什么作用?