找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1269|回复: 1
收起左侧

STM32按键中断后红灯和蜂鸣器报警程序

[复制链接]
ID:586669 发表于 2020-4-26 10:47 | 显示全部楼层 |阅读模式
  1. #include "stm32f10x.h"
  2. #include <stdio.h>


  3.         void delay()
  4.         {
  5.                 //unsigned int volatile a = 0xFF;
  6.                 uint32_t volatile a = 0xFF;
  7.                 while(a--);
  8.         }
  9. void GPIO()
  10. {
  11.         /*初始化GPIO*/
  12.         //LED
  13.         GPIO_InitTypeDef GPIO_InitStruct;//定义GPIO初始化结构体
  14.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//打开B脚时钟
  15.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;//选择第5引脚进行设置        
  16.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//设置该引脚为推挽输出模式
  17.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//设置该引脚的输出频率为50MHz
  18.         GPIO_SetBits(GPIOB,GPIO_Pin_5);
  19.         GPIO_Init(GPIOB,&GPIO_InitStruct);//对B引脚进行初始化
  20.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;//选择第1引脚进行设置        
  21.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//设置该引脚为推挽输出模式
  22.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//设置该引脚的输出频率为50MHz
  23.         GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  24.         GPIO_Init(GPIOB,&GPIO_InitStruct);//对B引脚进行初始化
  25.         //KEY
  26.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开A脚时钟
  27.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;//选择第0引脚进行设置
  28.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//设置该引脚为输入模式
  29.         //GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//设置该引脚的输出频率为50MHz        
  30.   //beep
  31.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;//选择第8引脚进行设置        
  32.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//设置该引脚为推挽输出模式
  33.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//设置该引脚的输出频率为50MHz
  34.   GPIO_ResetBits(GPIOA,GPIO_Pin_8);        
  35.   GPIO_Init(GPIOA,&GPIO_InitStruct);//对A引脚进行初始化
  36.         /*分组,确定抢占优先级和子优先级*/
  37.          NVIC_InitTypeDef NVIC_InitStructure;
  38.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  39.          NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  40.    NVIC_InitStructure.NVIC_IRQChannelSubPriority =0x01;
  41.          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;
  42.    NVIC_Init(&NVIC_InitStructure);
  43.          /* 配置中断*/
  44.          EXTI_InitTypeDef EXTI_InitStructure;
  45.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//打开复用时钟
  46.    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);//映像PA0为中断
  47.    EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  48.    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  49.    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  50.    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  51.    EXTI_Init(&EXTI_InitStructure);
  52.         
  53.         
  54. }



  55. int main(void)
  56. {
  57.         GPIO();
  58.         
  59.         while (1)
  60.   {        
  61.          
  62.         }
  63. }
复制代码


中断.7z

172.05 KB, 下载次数: 21, 下载积分: 黑币 -5

stm32f103野火

回复

使用道具 举报

ID:586669 发表于 2020-4-26 10:47 | 显示全部楼层
代码只复制了一部分,真个工程在压缩包
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表