初级会员

- 积分
- 113
- 金钱
- 113
- 注册时间
- 2022-6-7
- 在线时间
- 17 小时
|
10金钱
我想请教一下软件中断的配置思路:用mcu进行ADC采集热敏电阻,测量温度;当温度超过设定的阈值后进入中断,中断执行的程序是蜂鸣器报警。
大佬们,我下面这段代码是有错误的,请问要怎么修改?
如果我这里不用中断进入蜂鸣器报警的话,那原程序一进入蜂鸣器报警就出不来了。
- #include "stm32f10x.h"
- #include "Delay.h"
- void interrupt()
- {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //配置时钟
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
-
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);//配置中断线路
-
- EXTI_InitTypeDef EXTI_InitStructure;
- EXTI_InitStructure.EXTI_Line=EXTI_Line14;
- EXTI_InitStructure.EXTI_LineCmd=ENABLE;
- EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
- EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
- EXTI_Init(&EXTI_InitStructure);
-
- EXTI_GenerateSWInterrupt(EXTI_Line14); //软件中断,但是不知道怎么用
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
-
- NVIC_InitTypeDef NVIC_Initstructure;
- NVIC_Initstructure.NVIC_IRQChannel=EXTI15_10_IRQn;
- NVIC_Initstructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority=1;
- NVIC_Initstructure.NVIC_IRQChannelSubPriority=1;
- NVIC_Init(&NVIC_Initstructure);
-
- }
- void EXTI15_10_IRQHandler() //进入中断
- {
- if(EXTI_GetITStatus(EXTI_Line14)==SET)
- {
- Beep_Init(); //调用初始化蜂鸣器函数
- Get_beep(); //调用蜂鸣器报警函数
- EXTI_ClearITPendingBit(EXTI_Line14);//清除标志位
- }
- }
- void Beep_Init()
- {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
-
- GPIO_InitTypeDef GPIObeep;
- GPIObeep.GPIO_Mode=GPIO_Mode_IPU;
- GPIObeep.GPIO_Pin=GPIO_Pin_12;
- GPIObeep.GPIO_Speed=GPIO_Speed_50MHz;
- GPIO_Init(GPIOB,&GPIObeep);
- }
复制代码
|
|