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

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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值