回顾自己之前写的LED的亮灯程序,短短的几行代码就实现了。
#include <reg52.h>
void main(void){
P0 = 0x11;
while(1);
}
以上代码就可以点亮与P0口相连的阴极LED了。
但是这个灯是怎么亮的呢?
关键在于头文件
void PORT_init(PTXn_e ptxn, uint32 cfg )
{
SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK << PTX(ptxn)); //开启PORTx端口 1.使能PORT时钟
//系统时钟门控寄存器控制A,B,C,D,E的时钟源
PORT_ISFR_REG(PORTX_BASE(ptxn)) = (1<<PTn(ptxn)); // 清空标志位 2.清空中断标志位
PORT_PCR_REG(PORTX_BASE(ptxn), PTn(ptxn)) = cfg; // 复用功能 实现中断触发方式,带无源滤波器,复用功能口,上拉或下拉电阻 3.配置port的各种属性
}
程序分析:
SIM_SCGC5的宏定义为: