在线时间4 小时
UID3153427
注册时间2015-9-13
NXP金币0
该用户从未签到
新手上路

- 积分
- 36
- 最后登录
- 2016-8-13
|
因为YL-KL26Z开发板给的例程用的是KL25的头文件,虽然说KL25与KL26是兄弟,但是KL26用KL25的头文件开发毕竟不是我的风格,所以我用了KL26的头文件,首先上代码,因为完全是寄存器控制,写的全部是寄存器,望 仁者见仁智者见智:
我认为代码没有问题,但是烧写在开发板上却失败,并没有出现按一下键就反转一次LED的现象,求人指点,哪里错了?
#include "MKL26Z4.h"
int main()
{
SIM->SCGC5 |= (SIM_SCGC5_PORTB_MASK
| SIM_SCGC5_PORTD_MASK
| SIM_SCGC5_PORTA_MASK); //开启A,B,D时钟
PORTB->PCR[18] &= ~PORT_PCR_MUX_MASK;
PORTB->PCR[18] |= PORT_PCR_MUX(1);
PORTB->PCR[19] &= ~PORT_PCR_MUX_MASK;
PORTB->PCR[19] |= PORT_PCR_MUX(1);
PORTD->PCR[1] &= ~PORT_PCR_MUX_MASK;
PORTD->PCR[1] |= PORT_PCR_MUX(1); //配置三个LED为GPIO功能
PTD->PDDR |= (1 << 1);
PTB->PDDR |= ((1 << 18)|(1 << 19)); //配置LED为输出方向
PTD->PDOR |= (1 << 1);
PTB->PDOR |= ((1 << 18)|(1 << 19)); //配置LED为高电平,使其灭
PORTD->PCR[6] &= ~PORT_PCR_MUX_MASK;
PORTD->PCR[6] |= PORT_PCR_MUX(1); // 按键Key3,配置为GPIO功能
PORTA->PCR[4] &= ~PORT_PCR_MUX_MASK;
PORTA->PCR[4] |= PORT_PCR_MUX(1); // 按键Key4,配置为GPIO功能
PTD->PDDR &= ~(1 << 6);
PTA->PDDR &= ~(1 << 4); //配置按键为输入功能
PORTD->PCR[6] |= ~PORT_PCR_IRQC_MASK;
PORTD->PCR[6] |= PORT_PCR_IRQC(11);
PORTA->PCR[4] |= ~PORT_PCR_IRQC_MASK;
PORTA->PCR[4] |= PORT_PCR_IRQC(11); //配置按键的中断触发方式:跳变沿触发中断
NVIC_EnableIRQ(PORTA_IRQn);
NVIC_SetPriority(PORTA_IRQn,4);
NVIC_EnableIRQ(PORTC_PORTD_IRQn);
NVIC_SetPriority(PORTC_PORTD_IRQn,6); //开中断以及配置优先级
PORTA->ISFR |= (1 << 4);
PORTD->ISFR |= (1 << 6); //清空标志位
while(1)
{
; //等待。。。
}
}
void PORTA_IRQHandler()
{
if((PORTA->ISFR) & (1 << 4))
{
PORTA->ISFR |= (1 << 4);
PTB->PTOR |= (1 << 18);
}
}
void PORTC_PORTD_IRQHandler()
{
if((PORTD->ISFR) & (1 << 6))
{
PORTD->ISFR |= (1 << 6);
PTB->PTOR |= (1 << 19);
}
}
|
|