没有uarthtmlspecialchars函数avail函数会有什么问题

单片机TM4C123学习(五):UART的使用
单片机TM4C123学习(五):UART的使用
发布时间: 13:02:29
编辑:www.fx114.net
本篇文章主要介绍了"单片机TM4C123学习(五):UART的使用 ",主要涉及到单片机TM4C123学习(五):UART的使用 方面的内容,对于单片机TM4C123学习(五):UART的使用 感兴趣的同学可以参考一下。
1.配置UART
void uart_configure(uint32_t baud)
{
// Enable the GPIO Peripheral used by the UART
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
// Enable UART0
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
// Configure GPIO Pins for UART mode
ROM_GPIOPinConfigure(GPIO_PA0_U0RX);
ROM_GPIOPinConfigure(GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
// Use the internal 16MHz oscillator as the UART clock source
UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);
// Initialize the UART for console I/O
UARTStdioConfig(0, baud, );
}
void uart_printf(const char *pcString, ...)
{
va_list vaArgP;
// Start the varargs processing.
va_start(vaArgP, pcString);
UARTvprintf(pcString, vaArgP);
// We're finished with the varargs now.
va_end(vaArgP);
}
uart_printf("demo begin \n");
UC1701CharDispaly(0, 0,"your name:");
UC1701CharDispaly(2, 0,"your number:");
// 从串口得到一个字符
UARTCharGet(UART0_BASE);
// 如果PC有发送字符
if(UARTCharsAvail(UART0_BASE))
{
}
// 清零
memset(name,' ',sizeof(name));
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1016)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'关于Stellaris系列UART的FIFO新认识,经典!',
blogAbstract:'【经典提问】  有没有办法去掉UART的FIFO,或者怎样才能实现每收发一个字符就中断一次呢?Stellaris系列ARM的UART好像无法做到这一点,存在缺陷!【精妙解答】  误解了,根本就不是缺陷,这恰恰是优点!  看来许多人还没有真正理解FIFO的作用和优点,仍然停留在每收发一个字符就要中断处理一次的老思路上。UART收发FIFO主要是为了解决收发中断过于频繁而导致的CPU效率不高的问题。  FIFO的必要性。在进行UART通信时,中断方式比轮询方式要简便且效率高。但是,如果没有收发FIFO,则每传输一个数据(5~8位)都要中断处理一次,效率仍然不高。如果有了收发FIFO,则可以在连续收发若干个数据(可多至14个)后才产生一次中断,然后一起处理。这就大大提高了收发效率。',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:8,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}UART的配置和控制由UARTConfigGet;UARTConfigSetExpClk()、UA;UART的数据发送和接收由UARTCharGet;UARTCharGetNonBlocking();UART中断由UARTIntClear()、UA;longUARTCharGet(unsigned;longUARTChaGetrNonBlocki;voidU
的 配 置 和 控 制 由 UARTConfigGetExpClk() 、
UARTConfigSetExpClk() 、UARTDisable()、UARTEnable()、UARTParityModeGet()和 UARTParityModeSet()函数来处理。
的 数 据 发 送 和 接 收 由 UARTCharGet() 、
UARTCharGetNonBlocking() 、UARTCharPut() 、 UARTCharPutNonBlocking() 、 UARTBreakCtl() 、 UARTCharsAvail() 和UARTSpaceAvail()函数来处理。
UART 中断由 UARTIntClear()、UARTIntDisable()、UARTIntEnable()、UARTIntRegister()、UARTIntStatus()和 UARTIntUnregister()函数来管理。 UART的数据发送和接收
long UARTCharGet(unsigned long ulBase),从指定端口的接收 FIFO 中获取一个字符。如果没有可用的字符,这个函数将一直等待,直至接收到一个字符,然后再返回。
long UARTChaGetrNonBlocking (unsigned long ulBase),返回从指定端口读取的字符,强制转换成 long 类型。如果当前在接收 FIFO 中没有字符,则返回-1。在尝试调用这个函数前应该先调用 UARTCharsAvail()。
void UARTCharPut (unsigned long ulBase, unsigned char ucData),把字符 ucData 发送到指定端口的发送 FIFO 中。如果发送 FIFO 中没有多余的可用空间,这个函数将会一直等待,直至在返回前发送 FIFO 中有可用的空间。
tBoolean UARTCharPutNonBlocking (unsigned long ulBase, unsigned char
ucData),将字符 ucData 写入指定端口的发送 FIFO。这个函数不会停滞(block),因此,如果发送 FIFO 中没有可用的空间,则函数返回 False,应用迟点将会再尝试执行这个函数。
tBoolean UARTCharsAvail (unsigned long ulBase),如果接收 FIFO 中有数据则返回 True;如果接收 FIFO 中没有数据则返回 False。
tBoolean UARTSpaceAvail ( unsigned long ulBase),这个函数返回一个标志,用来指示发送 FIFO 中是否有可用的空间。
UART的配置和控制
参数描述:
ulBase 是 UART 端口的基址。
ulUARTClk 是提供给 UART 模块的时钟速率。
pulBaud 是一个指针,指向波特率存放的位置。
pulConfig 是一个指针,指向数据格式存放的位置。
void UARTConfigGetExpClk( unsigned long ulBase, unsigned long ulUARTClk, unsigned long *pulBaud, unsigned long *pulConfig),确定 UART 的波特率和数据格式,给出一个明确提供的外设时钟(以 ExpClk 为后缀)。
返回的波特率是实际的波特率;它可以不是所需的确切波特率或一个“正式的”波特率。
pulConfig 返回的数据格式与 UARTConfigSetExpClk ()的 ulConfig 参数列举出来的值相同。
外设时钟将与处理器的时钟相同。该时钟值将会是 SysCtlClockGet()返回的值,或如果该时钟为已知常量时(调用 SysCtlClockGet()时用来保存代码/执行体),可以明确时钟是硬编码。
void UARTConfigSetExpClk (unsigned long ulBase, unsigned long ulUARTClk, unsigned long ulBaud, unsigned long ulConfig),数 目 、 停 止 位 数 目 和 奇 偶 位 3
个 值 的 逻 辑 或 。
择 每 个 字 节 含 有
个 数 据 位 。UART_CONFIG_STOP_ONE 和UART_CONFIG_STOP_TWO 分别用来选择1 或2 个停止位。
校验位、奇偶位总是为 1 和奇偶位总是为 0)。
void UARTDisable (unsigned long ulBase),清零 UARTEN、TXE 和 RXE 位,再等待当前字符发送结束,然后刷新发送 FIFO。
void UARTEnable (unsigned long ulBase),设置 UARTEN、TXE 和 RXE 位,并使能发送和接收的 FIFO。
void UARTFIFOLevelGet (unsigned long ulBase, unsigned long *pulTxLevel, unsigned long *pulRxLevel),ulBase 是 UART 端口的基址,这个函数获取将产生发送和接收中断的 FIFO 触发点。
pulTxLevel是指针,指向发送 FIFO触发点的存放单元,返回
UART_FIFO_TX1_8、UART_FIFO_TX2_8、UART_FIFO_TX4_8、
UART_FIFO_TX6_8或UART_FIFO_TX7_8中的一个。 pulRxLevel是指针,指向接收 FIFO 触发点的存放单元,返回 UART_FIFO_RX1_8、
UART_FIFO_RX2_8 、UART_FIFO_RX4_8 、UART_FIFO_RX6_8或UART_FIFO_RX7_8 中的一个。
void UARTFIFOLevelSet unsigned long ulBase, unsigned long ulTxLevel,
unsigned long ulRxLevel),这个函数设置将产生发送和接收中断的 FIFO 触发点
void UARTIntClear (unsigned long ulBase, unsigned long ulIntFlags),清除指定的 UART
中断源,使其不再有效。这必须在中断处理程序中处理,以防在退出时再次对其进行调用。此参数 ulIntFlags 与 UARTIntEnable()的 ulIntFlags 参数具有相同的定义。
void UARTIntEnable (unsigned long ulBase, unsigned long ulIntFlags),使能指示的 UART
中断源。只有使能的中断源才能反映为处理器中断;禁止的中断不对处理器产生任何影响。参数 ulIntFlags 是下列值任何组合的逻辑或:UART_INT_TX:发送中断;
UART_INT_RX:接收中断。
void UARTIntRegister (unsigned long ulBase, void (*pfnHandler) (void)),这个函数真正地注册这个中断处理程序。这将会使能中断控制器中的全局中断;特定的UART 中断必须通过 UARTIntEnable()来使能。由中断处理程序负责清除中断源。
unsigned long UARTIntStatus (unsigned long ulBase, tBoolean bMasked),这个
函数返回指定 UART
的中断状态。原始的中断状态或允许反映到处理器中的中断的状态被返回。bMasked:如果需要原始的中断状态,则 bMasked 为 False;如果需要屏蔽的中断状态,bMasked 就为 True。返回值意义见寄存器UARTRIS(原始状态)和UARTMIS定义――第四、五位分别表示发送、接收中断。
三亿文库包含各类专业文献、幼儿教育、小学教育、生活休闲娱乐、各类资格考试、专业论文、中学教育、UART_API51等内容。 
 nodemcu API说明_计算机软件及应用_IT/计算机_专业资料。word文档,希望大家能...参见 - []() uart 模块常量无 uart.setup() 描述 设置 uart 的波特率,字节...  /***************************************************************************** * uart.c: UART API fi/******...  7.3.3 UART 寄存器描述 应用程序访问 UART 内核使用 HAL API,不通过直接访问 UART 内核寄存器的方式。 通常,寄存器映射只是对编写内核的驱动程序才有用。 表 8...  串口驱动 API 1、uart_register_driver /* 功能: uart_register_driver 用于将串口驱动 uart_driver 注册到内核(串口 核心层)中,通常在模块初始化函数调用该函数...  &uart_api.h& int main(void) { struct pollfd fds[SEL_FILE_NUM]; char buff[BUFFER_SIZE]; int i, real_ int recv_ /*首先按一定的权限...  UART、RS232、I2C、SPI 他们的区别和联系 UART 是指串口通信的芯片,串口就是...(GUI)等功能,并提供了大量的应用程序接口(API),从而使得应用软件的 开发变得...  重要说明:在 uart_api.h 有两个比较重要的宏定义: #define #define #define #define #define GNR_COM 0 //普通串口 USB_COM 1 //USB 串口 COM_TYPE GNR...  3、 ReadFile() API 与 UART 硬件的同步:说是和 UART 硬件的同步,这个“硬件”也是比较抽象的概念,早 期的 C 操作 UART 端口还是很具体的。 现在很多笔记本...  让我比较困惑的一个问题是:XPS 驱动给出的 API 驱动中有两个函数分别是 void XUartLite_SetRecvHandler(XUartLite * InstancePtr, XUartLite_Handler FuncPtr,...UART库函数_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
UART库函数
上传于|0|0|文档简介
&&用于arm编程
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢TI的模板没问题,我都试过了。最好把代码传上来,大家下载到板子上看现象一下,然后再分析
在线时间865 小时
威望13159分
芯币28950枚
TA的帖子TA的资源
裸片初长成(初级), 积分 13159, 距离下一级还需 6841 积分
裸片初长成(初级), 积分 13159, 距离下一级还需 6841 积分
希望热心坛友解答,帮顶
在线时间911 小时
威望3983分
芯币15554枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 3983, 距离下一级还需 2017 积分
五彩晶圆(中级), 积分 3983, 距离下一级还需 2017 积分
你这个问题没有说清楚,TI出厂的模板一般都是没有问题,你在串口接收下一个中断看看有没有显示,OLED上的显示你看看你改动哪里没有?多试几次就搞明白了
在线时间431 小时
E金币166枚
TA的帖子TA的资源
一粒金砂(高级), 积分 299, 距离下一级还需 201 积分
一粒金砂(高级), 积分 299, 距离下一级还需 201 积分
可以参看以前我弄的UART的模板。
在线时间33 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "drivers/rit128x96x4.h"
#include "inc/lm3s6965.h"
//*****************************************************************************
//! \addtogroup example_list
//! UART (uart_echo)
//! This example application utilizes the UART to echo text.
The first UART
//! (connected to the FTDI virtual serial port on the evaluation board) will be
//! configured in 115,200 baud, 8-n-1 mode.
All characters received on the
//! UART are transmitted back to the UART.
//*****************************************************************************
//*****************************************************************************
// The error routine that is called if the driver library encounters an error.
//*****************************************************************************
#ifdef DEBUG
__error__(char *pcFilename, unsigned long ulLine)
//*****************************************************************************
// The UART interrupt handler.
//*****************************************************************************
UARTIntHandler(void)
unsigned long ulS
GPIO_PORTF_DATA_R &= ~(0x01);
// Get the interrrupt status.
ulStatus = UARTIntStatus(UART0_BASE, true);
// Clear the asserted interrupts.
UARTIntClear(UART0_BASE, ulStatus);
// Loop while there are characters in the receive FIFO.
while(UARTCharsAvail(UART0_BASE))
// Read the next character from the UART and write it back to the UART.
UARTCharPutNonBlocking(UART0_BASE, UARTCharGetNonBlocking(UART0_BASE));
//*****************************************************************************
// Send a string to the UART.
//*****************************************************************************
UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)
// Loop while there are more characters to send.
while(ulCount--)
// Write the next character to the UART.
UARTCharPutNonBlocking(UART0_BASE, *pucBuffer++);
//*****************************************************************************
// This example demonstrates how to send a string of data to the UART.
//*****************************************************************************
main(void)
// Set the clocking to run directly from the crystal.
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ);
// Initialize the OLED display and write status.
RIT128x96x4Init(1000000);
RIT128x96x4StringDraw("UART Echo",
RIT128x96x4StringDraw("Port:
12, 16, 15);
RIT128x96x4StringDraw("Baud:
115,200 bps",
12, 24, 15);
RIT128x96x4StringDraw("Data:
12, 32, 15);
RIT128x96x4StringDraw("Parity: None",
12, 40, 15);
RIT128x96x4StringDraw("Stop:
12, 48, 15);
// Enable the peripherals used by this example.
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
// Enable the GPIO pin for the LED (PF0).
Set the direction as output, and
// enable the GPIO pin for digital function.
GPIO_PORTF_DIR_R = 0x01;
GPIO_PORTF_DEN_R = 0x01;
// Turn on the LED.
GPIO_PORTF_DATA_R |= 0x01;
// Enable processor interrupts.
IntMasterEnable();
// Set GPIO A0 and A1 as UART pins.
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
// Configure the UART for 115,200, 8-N-1 operation.
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
// Enable the UART interrupt.
IntEnable(INT_UART0);
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
// Prompt for text to be entered.
UARTSend((unsigned char *)"Enter text: ", 12);
// Loop forever echoing data through the UART.
其实也没什么更改,就是加了灯,我把这个代码复制更改到keil打开ti提供的就行,自己新建文件夹加入inc等,出现了这些状况,是不是keil配置有问题还是没有生成某些文件啊
在线时间33 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
我没有更改oled显示程序,再说我也不会,嘿嘿
感谢楼上几位热心,多谢啦
在线时间33 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
可以在串口调试软件输入了,要复制它的startup_rvmdk.S才行,但oled还是不显示
希望各位高手帮忙啊
在线时间33 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
解决了,嘿嘿,谢谢2楼和3楼
在线时间2291 小时
威望10096分
E金币509枚
TA的帖子TA的资源
串口中断没打开对吧,就是那个中断的相量
在线时间33 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
荣誉会员勋章
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
EEWORLD 官方微信
Powered by
逛了这许久,何不进去瞧瞧?}

我要回帖

更多关于 availheight 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信