这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » LM3S811学习笔记(UART)

共6条 1/1 1 跳转至

LM3S811学习笔记(UART)

高工
2012-10-29 23:47:59     打赏
经过一天的奋战,此部分总算有了点进展,不过还有很大一部分东东没有搞清楚,不会就此落下的,加油!
#include "inc\hw_memmap.h"
#include "inc\hw_ints.h"
#include "inc\hw_types.h"
#include "driverlib\sysctl.h"
#include "driverlib\gpio.h"
#include "driverlib\interrupt.h"
#include "driverlib\uart.h"
#include "type.h"
void ProtectJTAG(void) {
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);//2MA驱动能力,推挽方式 弱上拉
GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);//设为输入方式亦可不要上一语句
while(GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4) == 0) { ; } }

void UARTInit(void) {
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);//使能外设A端口R/T
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); //使能串口外设
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); //使能串口GPIO脚
//UART配置 UART0 串口时钟为系统时钟 波特率9600 8位数据位 1位停止位 无奇偶校验
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE));
//UARTFifoLevelSet(UART0_BASE,8,8);//FIFO出发深度
IntEnable(INT_UART0); //使能串口中断
IntMasterEnable(); //使能全局中断
//UARTIntEnable(UART0_BASE,UART_INT_RX | UART_INT_TX);//使能串口接收和发送中断
//IntPrioritySet(INT_UART0,0);//设置中断优先级
UARTEnable(UART0_BASE); //使能串口(uart0) 发送和接收 }

void UARTSend(const unsigned char *str,unsigned long ulcount) {
while(*str) {
if(UARTSpaceAvail(UART0_BASE)) {
UARTCharPutNonBlocking(UART0_BASE, *str); //成功发送则返回true;若FIFO中没有可用空间则返回False,稍后再次尝试。
str++; ulcount--; } } }

/******************************* **uart通用异步收发器 ******************************/
void main(void) {
ProtectJTAG();
SysCtlClockSet( SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ );
UARTInit();
const unsigned char ss[]={"Nothing in the world can take the place of persistence !"};
unsigned long count=57;
UARTSend(ss,count);
while(1) { }
}


     LM3S811控制器带有2个UART模块s Stellaris UART 执行并串转换和串并转换功能。 Stellaris UART 的一些特性描述如下: 一个 16×12 位的接收 FIFO 和一个 16×8 位的发送 FIFO; 可编程的波特率发生器; 起始位、停止位和奇偶位的自动产生和撤除(stripping); 线路断开(Line break)的产生和检测; 可编程的串行接口: 5、6、7 或 8 个数据位; 奇校验位、偶校验位、粘附(stick)奇偶校验位或无奇偶校验位的产生和检测; 1或 2 个停止位的产生; 波特率的产生(从 DC 到处理器时钟/16)。 IrDA 串行 IR(SIR)编码器/解码器; DMA 接口。



关键词: LM3S811     学习     笔记     UART0    

高工
2012-10-30 07:55:51     打赏
2楼
先收藏,我也有块板子,简单测试了一下,还没有真真开始调!

院士
2012-10-30 10:00:58     打赏
3楼
看了楼主的初始化,发现楼主将串口的fifo给关闭了。
其实这个fifo在stellaris里是关不掉的。

高工
2012-10-30 20:10:38     打赏
4楼
FIFO注释掉了也不影响它工作,如果设置FIFO触发深度的话是不是还要写它的中断函数啊?我再研究研究,哈哈哈

高工
2012-10-30 20:11:26     打赏
5楼
一起加油吧,哈哈哈

高工
2012-11-01 15:55:56     打赏
6楼
对于串口发送的参数ulcount在此更改一下:ulcount=strlen(ss);这样的话就完美啦,省的数多少个字符啦。嘿嘿

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]