|
不說(shuō)了,貼代碼TALK IS LESS.SHOW ME THE CODE.
這個(gè)是。c文件
#include "includes.h"
#include "stm32f4xx_exti.h"
void EXTILine4_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4;
GPIO_Init(GPIOD,&GPIO_InitStructure);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD,EXTI_PinSource4);
EXTI_InitStructure.EXTI_Line =EXTI_Line4;
EXTI_InitStructure.EXTI_Mode =EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd =ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel =EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void EXTI4_IRQHandler()
{ long long int i;
// OS_CPU_SR cpu_sr;
// OS_ENTER_CRITICAL(); //????????,????
// //?????????(0~255)
// OSIntEnter ( ); //OSSemPost(NMEA_MBOX);
// OS_EXIT_CRITICAL(); //????????
//
if(EXTI_GetITStatus(EXTI_Line4) !=RESET)
{
BUZZER(HIGH);
delay_ms(1000);
BUZZER(LOW);
}
EXTI_ClearFlag(EXTI_Line4);
// OSIntExit ( );
}
接下來(lái)是。h
#ifndef _EXIT_H_
#define _EXIT_H_
void EXTILine4_Config(void);
void Buzzer(uint8_t time, uint8_t OnTime, uint8_tOffTime);
#endif
------------------------------------------------------------------------------
需要注意的是注意配置的引腳有沒(méi)有錯(cuò)誤,在ucos下要把那兩句注釋了的OS開(kāi)頭的語(yǔ)句加上,用來(lái)告訴系統(tǒng)中斷的開(kāi)閉,讓系統(tǒng)進(jìn)行任務(wù)調(diào)度,具體參考 可剝奪式內(nèi)核的任務(wù)調(diào)度策略
|
|