按键控制LED灯闪烁及外部中断的使用

文章目录


前言

stm的学习笔记

在主函数的“ while(1)循环,使用蜂鸣器 BEEP1(PA1)输出“滴滴 ”声音,使用扩展板的 KEY0(PA8)按键作为外部中断输入源,采用中断方式,按下 KEY0按键之后,产生中断,蜂鸣器声音暂停,扩展板上LED0(PB0)闪烁 5次,中断响应结束后,蜂鸣器恢复输出“滴滴 ”声音。

一、使用软件

STM32CubeMX,keil5

二、使用步骤

1.外设配置

主要用了三个引脚,PB0控制LED闪烁,PA8按键,PA1蜂鸣器

引脚的配置

时钟的配置

2.代码

主函数代码如下(示例):

int FlagS = 0;
int count =0;
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 system clock */
  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 */
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
		if(FlagS ==1){
			HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
			while(count<5)
			{
				HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
				HAL_Delay(1000);
				HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
				HAL_Delay(1000);
				count++;
			}
			if(count==5)count=0;
			//HAL_Delay(5000);
			FlagS = 0;
		}
  }
  /* USER CODE END 3 */
}
外部中断回调函数代码
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == KEY0_Pin)
{
		FlagS = 1;
	}
}	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值