在线时间74 小时
UID3323317
注册时间2016-10-25
NXP金币134
TA的每日心情 | 慵懒 2019-7-22 13:56 |
---|
签到天数: 38 天 连续签到: 1 天 [LV.5]常住居民I
金牌会员
 
- 积分
- 1834
- 最后登录
- 2020-10-13
|
本帖最后由 邹姆斯特朗 于 2016-11-19 14:06 编辑
软件平台:keil5.14
硬件平台:LPC824Lite
目的:利用串口发送字符串。
.
STC89C51
在51单片机中,只有一个串口。它是一个可编程的全双工串行通信接口,它可用作异步通信方式,共有四种工作方式。初始化步骤主要为:
1.设置定时器1的工作方式(用来提供波特率)
2.设置串口的工作方式
3.设置波特率
4.开总中断,开串口中断
5.启动定时器1
LPC824
824拥有三个串口,UART0\UART1\UART2。主要性能可以在官方datasheet中查看,这里就不重复累述了。现在我需要用UART0以指定的波特率向上位机发送数据,应该如何操作?
首先,通过开关矩阵分配好UART0的Txd引脚和Rxd引脚。
其次,我需要开启UART0的时钟,然后设置加载在其上的时钟频率大小,时钟来自于系统主频率的分频,所以我需要做的就是设置一个分频系数。
然后,设置UART0的数据帧格式,以及波特率。
下来,使能UART0。
最后,发送数据。
开始考虑到利用寄存器来开发的,但是把datasheet的UART部分看了几遍之后,发觉挺麻烦的,目前波特率的计算配置还在研究中,所以先用库函数来实现串口发送功能。
- /**************************************************************
- ** 名称 : main(void)
- ** 描述 : mian函数
- ** 参数 :
- **
- ** 返回值 : 无
- ***************************************************************/
- int main(void)
- {
- //Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SWM);//使能开关矩阵时钟,文档中说上电默认打开的
- Chip_SWM_MovablePinAssign(SWM_U0_TXD_O, 4);//开关矩阵分配串口0的引脚
- Chip_SWM_MovablePinAssign(SWM_U0_RXD_I, 0);
- Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_SWM);//关闭开关矩阵时钟,降低功耗
-
- Chip_UART_Init(LPC_USART0); //使能串口时钟
- Chip_Clock_SetUARTClockDiv(1);//设置UART时钟分频器,1即是主系统时钟不分频
- Chip_UART_ConfigData(LPC_USART0, UART_CFG_DATALEN_8 | UART_CFG_PARITY_NONE | UART_CFG_STOPLEN_1);//8数据位,无奇偶校验,1停止位
- Chip_UART_SetBaud(LPC_USART0, 115200); //波特率115200
- Chip_UART_Enable(LPC_USART0); //使能串口
-
- Board_UARTPutSTR("UART:\n 1209Lab\n");
-
- }
复制代码
|
|