STM32中断LED

本文介绍了使用STM32CubeMX创建新项目,包括选择芯片、设置时钟和引脚,以及如何在Keil中进行GPIO配置和延时函数实现。详细描述了EXTI中断处理和GPIO操作,附有实物图和运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、新建项目

(1)回到STMCubeMX的主界面,创建新项目
在这里插入图片描述

(2)在part name里选择自己的芯片
在这里插入图片描述
(3)设置SYS
在这里插入图片描述
(4)设置RCC
在这里插入图片描述
接下来观察时钟架构,APB2总线的时钟由hse控制,同时在这个界面得把PLLCLK右边选上:
在这里插入图片描述

(5)设置引脚,A1,B3, B5, B9(B9 设置为EXTI)
在这里插入图片描述
在这里插入图片描述

(6)进入 code generate界面,选择生成初始化.c/.h文件
在这里插入图片描述

(7)点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM,点击generate code创建keil项目
在这里插入图片描述

二、keil仿真

(1)打开.uvprojx文件(或者在上一步选择open project)
在这里插入图片描述
(2)在main.c中main函数外创建函数

void Delay()
 {
   long i=0;
   for(;i<1000000;i++);
 }
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){

      if(GPIO_Pin == B9_EXTI_Pin){
        //获取B9的电位
        GPIO_PinState pinState = HAL_GPIO_ReadPin(B9_EXTI_GPIO_Port,B9_EXTI_Pin);

        if(pinState==GPIO_PIN_SET)
        {
		     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);  
	         Delay(); // 延时1s
		     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);

			
             HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); 
	         Delay(); // 延时1s
		     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
			 
			 
             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
             Delay(); // 延时1s
             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
   
        }
		else
		{
             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); 
		     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);  
		 	 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
        }
        
		}
}

(3)实物图
在这里插入图片描述
(4)运行效果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值