KL02Z之GPIO模块学习四

来源:本站
导读:目前正在解读《KL02Z之GPIO模块学习四》的相关信息,《KL02Z之GPIO模块学习四》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《KL02Z之GPIO模块学习四》的详细说明。
简介:关于Cortex M0+的NVIC详细说明,暂时还没有找到好的资料说明。先借STM32的内核Cortex M3来简单熟悉一下

开 发 板:FRDM MKL02Z4

模 块:GPIO模块

代 码:

//例程:通过按键中断,同时控制LED,按键按下LED状态翻转

intmain(void)

{

SIM_SCGC5|=(1UL<<10); //使能PORTB模块的时钟

PORTB_PCR11|=(1UL<<8) //PORTB的Pin11配置为GPIO模式

GPIOB_PDDR|=(1UL<<1 //GPIOB的Pin11配置为输出模式

PORTB_PCR10|=(1UL<<8); //PORTB的Pin10配置为GPIO模式

GPIOB_PDDR|=(1UL<<10 //GPIOB的Pin10配置为输出模式

SIM_SCGC5 |=(1UL<<9); //使能PORTA模块的时钟

PORTA_PCR12|=0x2u; //PORTA的Pin12上下拉使能

PORTA_PCR12|=0x1u; //PORTA的Pin12配置为上拉

PORTA_PCR12|=(1UL<<8); //PORTA的Pin12配置为GPIO模式

GPIOA_PDDR&=~(1UL<<1 //GPIOA的Pin12配置为输入2);

PORTA_PCR12&=~(0xF0000u);

PORTA_PCR12|=0xA0000u; //PORTA的中断触发方式为下降沿

NVIC->ISER[0]|=(1<<30); //使能PORTA的中断

//NVIC->ISER[0] = (1 << ((uint32_t)(30) & 0x1F));

while(1)

{

}

}

voidPORTA_IRQHandler(void) //中断操作函数

{

if(PORTA_ISFR==(1<<12)) //检测中断,中断标志是否为1

{

PORTA_PCR12|=0x1000000u; //清除中断使能

if((GPIOA_PDIR&(1<<12))==0)//检测GPIOA的输入数据寄存器的12位是否为1

{

GPIOB_PTOR|=(1<<11);//GPIOB的输出数据寄存器的位11翻转

GPIOB_PTOR|=(1<<10);//GPIOB的输出数据寄存器的位10翻转

}

}

}

提醒:《KL02Z之GPIO模块学习四》最后刷新时间 2024-03-14 00:53:52,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《KL02Z之GPIO模块学习四》该内容的真实性请自行鉴别。