PIT设置_中断优先级设置__MK20DX128VLH5_K20系列

来源:互联网 发布:linux查看ftp根目录 编辑:程序博客网 时间:2024/06/06 02:25

PIT初始化

/* cpu:MK20DX128VLH5  */#include "MK20D5.h"/* 中断优先级分组宏 */#define NVIC_PriorityGroup_0         ((uint32_t)0x7) /*!< 0 bits for pre-emption priority   4 bits for subpriority */                                               #define NVIC_PriorityGroup_1         ((uint32_t)0x6) /*!< 1 bits for pre-emption priority   3 bits for subpriority */                                                  #define NVIC_PriorityGroup_2         ((uint32_t)0x5) /*!< 2 bits for pre-emption priority   2 bits for subpriority */                                                   #define NVIC_PriorityGroup_3         ((uint32_t)0x4) /*!< 3 bits for pre-emption priority   1 bits for subpriority */                                                   #define NVIC_PriorityGroup_4         ((uint32_t)0x3) /*!< 4 bits for pre-emption priority   0 bits for subpriority */void GPIOInit(void);void PITInit(void);int main(void){    //时钟初始化在“systm_MK20D5.c”中配置为48M    GPIOInit();    PITInit();    while(1)    {    }}void GPIOInit(void){    SIM->SCGC5 |= SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTC_MASK;  //开端口时钟门控    /* PA.2、PC.3、PC.4配置为通用IO  */    PORTA->PCR[2] &= ~PORT_PCR_MUX_MASK;       PORTA->PCR[2] |= PORT_PCR_MUX(1);           PORTC->PCR[3] &= ~PORT_PCR_MUX_MASK;    PORTC->PCR[3] |= PORT_PCR_MUX(1);    PORTC->PCR[4] &= ~PORT_PCR_MUX_MASK;    PORTC->PCR[4] |= PORT_PCR_MUX(1);    /* PA.2上拉,PC.3下拉­  */    PORTA->PCR[2] |= PORT_PCR_PE_MASK;    PORTA->PCR[2] |= PORT_PCR_PS_MASK;    PORTC->PCR[3] |= PORT_PCR_PE_MASK;    PORTC->PCR[3] &= ~PORT_PCR_PE_MASK;        /* 端口方向配置:1-输出,0-输入 */    PTA->PDDR |= 1 << 2;            //PA.2    PTC->PDDR |= 1 << 3;            //PC.3    PTC->PDDR &= ~(1<<4);          //PC.4    /* 端口初始值设定 */    PTA->PCOR |= 1 << 2;            //PA.2 = 0    PTC->PSOR |= 1 << 3;            //PC.3 = 1    /* 中断配置:PC.3下降沿中断 */    PORTC->PCR[3] &= ~PORT_PCR_IRQC_MASK;    PORTC->PCR[3] |= PORT_PCR_IRQC(0x0A);   //    /* 中断优先级配置 */    NVIC_SetPriority(PORTC_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_1, 0, 1));    /* 使能中断 */    NVIC_EnableIRQ(PORTC_IRQn);}/* PIT0配置 */void PITInit(void){    SIM->SCGC6 |= SIM_SCGC6_PIT_MASK;   //PIT模块时钟    PIT->MCR &= ~PIT_MCR_MDIS_MASK;        //PIT时钟使能,该位比较特殊,对应位为“0”时使能    PIT->CHANNEL[0].LDVAL = 48000000-1;  //周期设置为1s    PIT->CHANNEL[0].TCTRL |= PIT_TCTRL_TIE_MASK;    //使能中断    /* 中断优先级配置 */    NVIC_SetPriority(PIT0_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_1, 0, 2));    /* 使能中断 */    NVIC_EnableIRQ(PIT0_IRQn);    PIT->CHANNEL[0].TCTRL |= PIT_TCTRL_TEN_MASK;    //使能定时器,定时器开始运行}/* PIT0中断响应 */void PIT0_IRQHandler(void){       /* 清中断标志 */    PIT->CHANNEL[0].TFLG |= PIT_TFLG_TIF_MASK;    /* PA.2翻转 */    PTA->PTOR |= 1 << 2;}/* PORTC中断响应 */void PORTC_IRQHandler(void){    /* 清中断标志 */    PORTC->ISFR |= (1<<3);}
0 0
原创粉丝点击