1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 7 ARM嵌入式系统:LCD/数码管/OLED初始化

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

时间:2020-07-15 15:16:52

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。