标题: STM32F4在UCOS下开中断 [打印本页]

作者: qinqin    时间: 2015-6-9 02:25
标题: STM32F4在UCOS下开中断
不说了,贴代码TALK IS LESS.SHOW ME THE CODE.


这个是。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 ( );

}



接下来是。h

#ifndef _EXIT_H_
#define _EXIT_H_
void EXTILine4_Config(void);
void Buzzer(uint8_t time, uint8_t OnTime, uint8_tOffTime);

#endif




------------------------------------------------------------------------------

需要注意的是注意配置的引脚有没有错误,在ucos下要把那两句注释了的OS开头的语句加上,用来告诉系统中断的开闭,让系统进行任务调度,具体参考  可剥夺式内核的任务调度策略






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1