这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» STM32» [经验]使用CubMX和Proteus学习STM32单片机(八)------外部

共9条 1/1 1 跳转至

[经验]使用CubMX和Proteus学习STM32单片机(八)------外部中断

工程师
2021-09-15 19:06:13 打赏

项目简介利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。本项目需要实现的功能就是利用CubMX配置外部中断,由外部按键触发外部中断,控制LED灯的状态改变,并在Proteus上仿真验证。
硬件模块STM32F103R4
LED灯
开关Button等
软件工具CubMX
Proteus
KEIL
电路连接图
工作流程
首先,创建好CubMX工程,PA1作为LED灯输出端,PA2作为外部中断触发端。

设置好相应的GPIO参数。

使能外部中断


其余按照自己的习惯,也可以默认



最后生成代码即可。


左边stm32f1xx_it.c中有系统中断的相关函数,在main.c中只是对外部中断的引脚进行设置并使能。需要在stm32f1xx_it.c中查找使用相应的函数才能实现需要的功能。



首先在stm32f1xx_it.c中找到EXti2_IRQHandler(void)函数,


再进入HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2)中断服务函数,里面主要有两个函数,一个复位__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin),另一个是回调函数HAL_GPIO_EXTI_Callback。


我们需要把自己想要的功能写到回调函数中HAL_GPIO_EXTI_Callback并添加到main.c文件中即可。



接下来,我们需要创建一个Proteus工程,用来验证功能。


开始验证。默认情况下LED端是高电平,即灯是灭的。


按下按键后,灯亮了。


再按又灭,继续按又亮,以此往复,功能成功实现。
程序代码main.c

int main(void){ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash inteRFace and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the systemclock*/ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */}...../* USER CODE BEGIN 4 */void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ unsigned i; i=5000; while(i--); //HAL_Delay(20);//延时函数消抖,防止误触发 if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==0) { HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);//翻转LED电平 }}/* USER CODE END 4 */


结语本文大部分内容都属于原创,如需转载,请附上本文网站,
如果需要相关的仿真图、程序代码等资料可以直接私信我,我会及时回复。





关键词: 使用 CubMX Proteus 学习 STM32

工程师
2021-09-20 23:41:39 打赏
2楼

分析的挺好的


工程师
2021-11-18 23:39:40 打赏
3楼

代码写的很好


工程师
2021-12-10 23:16:17 打赏
4楼

感谢您的分享


专家
2022-01-10 06:13:29 打赏
5楼

感谢分享


院士
2022-01-10 07:02:26 打赏
6楼

谢谢楼主分享的好文章,学习~!


高工
2022-01-10 08:47:40 打赏
7楼

感谢您的分享


专家
2022-01-20 05:36:43 打赏
8楼

感谢分享


专家
2022-01-20 06:44:38 打赏
9楼

谢谢分享!


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]