UART0初始化:
板子LPC1788
UART0初始化步骤:
1. 初始化引脚。
*(INT32U*) IOCON_P0_02 = 0X00000021;
*(INT32U*) IOCON_P0_03 = 0X00000021;
2. 一些相关寄存器的赋值。
*(INT32U*) PCONP |= PCUART0;//UART0 power on
*(INT32U*) U0LCR = WLS_8|SBS_1|PE_Dis|DLAB_En;//8位数据,1位停止位,无奇偶校验,DLAB=1
*(INT32U*) U0DLL = 0x20;//设置波特率
*(INT32U*) U0DLM = 0;
*(INT32U*) U0FCR = 0x00000087;//enable FIFO,Rx.Tx FIFO Reset,Rx Trigger Level 2(8 bytes)
*(INT32U*) U0LCR = WLS_8|SBS_1|PE_Dis|DLAB_Dis;//DLAB=0
*(INT32U*) U0IER = 0x00000007;//RDA,THRE,LSR中断
程序对于发送和接收采用中断方式,另外还有查询方式。
发送功能实现程序:
for(i = 0; i < len; i++)
{
*(INT8U*) U0THR = (str[i] & 0xFF);//给发送保持寄存器赋值
while(!(*(INT32U*) U0IIR & 0x00000002));//检查是否产生THR中断
// while(!(*(INT32U*)U0LSR)&(1<<5));
}
*(INT8U*) U0THR = 0x0a;//在这一串字符的末尾,输出回车符
接收功能实现程序:
while(!(*(INT32U*) U0IIR & 0x01))
{
switch(*(INT8U*) U0IIR & 0x0F)
{
case 0x04: //RDA
*buffer_addr ++ = *(INT8U*) U0RBR;
break;
case 0x0C: //CTI
*buffer_addr ++ = *(INT8U*) U0RBR;
break;
case 0x06:
che = *(INT8U*) U0LSR;//LSR
break;
default:
break;
}
关键字:LPC178 UART0 初始化
引用地址:
LPC1788的UART0初始化
推荐阅读最新更新时间:2024-03-16 13:50
STM8L RTC总结(2)初始化和配置
配置RTC时钟源 配置RTC时钟源为LSE,1分频,即32768Hz。 1. 等待CLK_CRTCR:RTCSWBSY位复位,然后设置CLK_CRTCR值为0x10; 2. 等待CLK_ECKCR:LSERDY位置位,标识LSE时钟源已稳定可用; 3. 等待CLK_ECKCR:LSEON位置位,标识LSE时钟源已启用。 解除RTC寄存器保护 执行以下操作顺序: 1. 写0xCA到寄存器RTC_WPR; 2. 写0x53到寄存器RTC_WPR。 写其它值到RTC_WPR,则自动激活RTC寄存器保护功能。 配置日历功能 配置步骤如下: 1. 进入初始化模式,置位RTC_ISR中INIT位;并等待初始化标志位(I
[单片机]
STM8S105 TIM1 TIM2 定时器的定时时间初始化
很多刚接触STM8单片机的入门者不知到如何使用TIM1和TIM2的定时器作为定时功能。 下面介绍如下: TIM1的初始化1us: 系统时钟是16M。 void set_TIM1_nus(u16 nus) { /*1u的记数周期*/ /*TIM1_TimeBaseInit(0x0F,TIM1_COUNTERMODE_UP,nus,TIM1_RCR_RESET_VALUE);*/ /* Set the Autoreload value */ TIM1- ARRH = (u8)(nus 8); TIM1- ARRL = (u8)(nus); /* Set the Prescaler value */ TIM1- PSCRH = (u
[单片机]
uboot-2011.12移植到S3C2440(三)——硬件初始化:看门狗、中断、时钟
/* * turn off dog, see C18P3 */ ldr r0, =pWTCON mov r1, #0x0 str r1, /* * C14 * mask all IRQs by setting all bits in the INTMR - default */ mov r1, #0xffffffff ldr r0, =INTMSK str r1, ldr r1, =0x7fff ldr r0, =INTSUBMSK str r1, /* * FCLK:HCLK:P
[单片机]
STM32 UART/USART初始化时钟使能
在学习STM32的过程中,我们通常会遇到使能时钟。例如在uart_init()的函数中,我们要使能串口: RCC- APB2ENR|=1 4;//使能串口1的时钟 RCC- AHB1ENR|=1 4;//使能portra的时钟 简而言之,就是让串口1和PA口工作。但是为什么使能之后就能工作了呢,我们可以查看手册,找到STM32的系统框架图(原子哥的资料里有) AHB (Advanced High performance Bus)高级性能总线,是系统总线的一种。AHB主要用于高性能模块之间的连接,如CPU,DMA等。 APB(Advancd Peripheral Bus),这是一种外围总线。APB主要用于低宽带的外围设备
[单片机]
关于定时器时间的一点小感悟
就是关于定时时间的计算,有了一个大致的了解。 TIM6Init(10000, 7200); //初始化定时器 6,预装载值为 10000,预分频值为 7200,定时时间 10000/(72000000/7200)=1s 1 那这篇是想介绍另外一种,假如我定时10ms已经确定,我想做到计每个数用的时间是39(us),那么对应的重装载数值及分频值如何确定呢? (感想来源于通用定时器比较输出256级PWM…) 总共10ms,每个数计39us,那么需要计10ms/39us=255个数。 此时对应的重装载值就是255了,然后对应的分频值为72*39-1。(72的含义是系统时钟,-1是C语言从0开始的)
[单片机]
STM32应用简章之GPIO初始化(输入引脚)
//初始化IO模式:上拉/下拉输入。调用函数: void KEY_Init(void) //IO初始化 { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//使能PORTA,PORTE时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//KEY0-KEY2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
[单片机]
移植u-boot-2010.09到S3C2440(一)——硬件初始化与测试
在u-boot的代码选择中,只有201009是最近的可直接编译通过的,不带memset.s的u-boot版本。 屏蔽lowlevel_init的调用之后,将我在u-boot-201112版本中所做的硬件初始化全部挪到本版本中,包括串口驱动的修改,时钟设置,LED的点亮。 这个时候通过开发板自带的u-boot写到SDRAM调试就直接有串口输出与提示符。 注:本系列文档只注释难点部分,其它略过。
[单片机]
STM32F107VC 锁相环初始化
AHB与APB的地位相当于PC中的南北桥,是两道独立的片内总线。 AHB:advanced high-performance bus;APB: advanced peripherals bus。 static void SetSysClockTo72(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration --------------------------- SYSCLK 由PLL时钟,外部高速时钟,内部高速时钟获得,最大为72MHz HCLK
[单片机]