/* cpu:MK20DX128VLH5 */
#include <MK20D5.h>
#include "system_MK20D5.h"void Delay_ms(uint32_t ms);
void GPIOInit(void);
int main (void)
{
GPIOInit();
while(1)
{
PTC->PTOR |= 1 << 3; //翻转PC.3
Delay_ms(500);
}
}
void GPIOInit(void)
{
SIM->SCGC5 |= SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK; //开端口时钟门控
/* PA.2、PC.3、PD.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);
PORTD->PCR[4] &= ~PORT_PCR_MUX_MASK;
PORTD->PCR[4] |= PORT_PCR_MUX(1);
/* PA.2上拉、PC.3下拉、PD.4默认 */
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
PTD->PDDR |= 1 << 4; //PD.4
/* 端口初值设定 */
PTA->PSOR |= 1 << 2; //PA.2 = 1
PTC->PSOR |= 1 << 3; //PC.3 = 1
PTD->PCOR |= 1 << 4; //PD.4 = 0
}
void Delay_ms(uint32_t ms)
{
uint32_t Val;
Val = SystemCoreClock/1000/4*ms;
while(--Val != 0); //汇编语句有三条,应该是有条双周期的,所以上面一行有/4
}