一、LCD/数码管模块在板子上的位置
LCD和数码管在板子上都分别有一个插槽。
二、LCD/数码管初始化代码
//SMG init
void SMG_Init()
{
/* PORTB and PORTD clock have already enabled*/
SIM_SCGC5|=SIM_SCGC5_PORTB_MASK+SIM_SCGC5_PORTD_MASK;
/*portB set to GPIO*/
PORTB_PCR0=PORT_PCR_MUX(0X1);
PORTB_PCR1=PORT_PCR_MUX(0X1);
PORTB_PCR2=PORT_PCR_MUX(0X1);
PORTB_PCR8=PORT_PCR_MUX(0X1);
PORTB_PCR9=PORT_PCR_MUX(0X1);
PORTB_PCR10=PORT_PCR_MUX(0X1);
/*portD set to GPIO*/
PORTD_PCR0=PORT_PCR_MUX(0X1);
PORTD_PCR1=PORT_PCR_MUX(0X1);
PORTD_PCR2=PORT_PCR_MUX(0X1);
PORTD_PCR3=PORT_PCR_MUX(0X1);
PORTD_PCR4=PORT_PCR_MUX(0X1);
PORTD_PCR5=PORT_PCR_MUX(0X1);
PORTD_PCR6=PORT_PCR_MUX(0X1);
PORTD_PCR7=PORT_PCR_MUX(0X1);
/*LED control pin set to out*/
GPIOB_PDDR|=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
/*LED bit pin set to out*/
// 1 Pin is configured as general-purpose output, for the GPIO function.
// PDDR配置输入或者输出,PDOR配置值
GPIOD_PDDR|=0x000000FF;
/*LED control pin set to high ,LEDs are closed*/
GPIOB_PDOR|=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
/*LED bit pin set to low ,LED bit are all lighted,change GPIOC_PDOR register can change the number it shows*/
GPIOD_PDOR=0xAA;
// /*LED control pin set to low ,LEDs are all open*/
GPIOB_PDOR&=~GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
}
三、初始化过程
LCD/数码管在板子上涉及PORTB和PORTD两个管脚。
step1:使能PORTB和PORTD这两个引脚的时钟
SIM_SCGC5|=SIM_SCGC5_PORTB_MASK+SIM_SCGC5_PORTD_MASK;
step2:PORTB管脚配置给GPIO用
PORTB_PCR0=PORT_PCR_MUX(0X1);
PORTB_PCR1=PORT_PCR_MUX(0X1);
PORTB_PCR2=PORT_PCR_MUX(0X1);
PORTB_PCR8=PORT_PCR_MUX(0X1);
PORTB_PCR9=PORT_PCR_MUX(0X1);
PORTB_PCR10=PORT_PCR_MUX(0X1);
step3:PORTD管脚配置给GPIO用
/*portD set to GPIO*/
PORTD_PCR0=PORT_PCR_MUX(0X1);
PORTD_PCR1=PORT_PCR_MUX(0X1);
PORTD_PCR2=PORT_PCR_MUX(0X1);
PORTD_PCR3=PORT_PCR_MUX(0X1);
PORTD_PCR4=PORT_PCR_MUX(0X1);
PORTD_PCR5=PORT_PCR_MUX(0X1);
PORTD_PCR6=PORT_PCR_MUX(0X1);
PORTD_PCR7=PORT_PCR_MUX(0X1);
step4:PORTB的6个管脚GPIO配置为输出模式
GPIOB_PDDR|=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
step5:PORTD的8个管脚GPIO配置为输出模式,即低8个bit设置为1
GPIOD_PDDR|=0x000000FF;
step6:配置PORTB 6个管脚的电平值为1,即关闭LED灯
该寄存器配置每个通用输出管脚上驱动的逻辑电平,将6个管脚的电平值配置为1,即关闭这6个LED灯。
GPIOB_PDOR|=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
step7:配置PORTD 8个管脚的电平值
GPIOD_PDOR=0xAA;
0xAA的二进制值为10101010,即引脚0,2,4,6引脚为0,打开这4个引脚的LED灯;1,3,5,7引脚的为1,关闭这4个引脚的LED灯。
step8:配置PORTB的6个引脚,打开6个LED灯
GPIOB_PDOR&=~GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
即设置这6个引脚的值为0.
8、ARM嵌入式系统:UART初始化_cyf31的专栏-CSDN博客