7、ARM嵌入式系统:LCD/数码管/OLED初始化

一、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博客


版权声明:本文为cyf31原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。