(kinetis K60)kinetis初体验之GPIO寄存器

时间:2022-10-20 17:54:31

(kinetis K60)kinetis初体验之GPIO寄存器

寄存器功能

(kinetis K60)kinetis初体验之GPIO寄存器

I0口初始化

(kinetis K60)kinetis初体验之GPIO寄存器

PORT寄存器

一个简单的流水灯

#include "common.h"

#define LED1(a) if(a)\
GPIOA_PDOR
&= ~(1<<10);\
else\
GPIOA_PDOR
|= (1<<10)


#define LED2(a) if(a)\
GPIOA_PDOR
&= ~(1<<11);\
else\
GPIOA_PDOR
|= (1<<11)
#define LED3(a) if(a)\
GPIOA_PDOR
&= ~(1<<28);\
else\
GPIOA_PDOR
|= (1<<28)

#define LED4(a) if(a)\
GPIOA_PDOR
&= ~(1<<29);\
else\
GPIOA_PDOR
|= (1<<29)

void init_gpio(void);
void delay(long count);


void main (void)
{
init_gpio();

LED2(
0);
LED3(
0);

while(1)
{
LED4(
0); //
LED1(1); //
delay(3000000);
LED2(
1);
LED1(
0);
delay(
3000000);
LED3(
1);
LED2(
0);
delay(
3000000);
LED3(
0);
LED4(
1);
delay(
3000000);
}
}

void init_gpio()
{

PORTA_PCR10
&= ~0x700; //MUX 000
PORTA_PCR10 |= PORT_PCR_MUX(1); //MUX 001 GPIO模式
PORTA_PCR11 &= ~0x700;
PORTA_PCR11
|= PORT_PCR_MUX(1);
PORTA_PCR28
&= ~0x700;
PORTA_PCR28
|= PORT_PCR_MUX(1);
PORTA_PCR29
&= ~0x700;
PORTA_PCR29
|= PORT_PCR_MUX(1);

GPIOA_PDDR
|= ((1<<10)|(1<<11)|(1<<28)|(1<<29)); //设置为输出
}

void delay(long count)
{
while(count--)
asm(
"nop");
}