在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
本帖最后由 zhjb1 于 2016-10-12 11:04 编辑
LPC824改变串口速率实验
实验和讨论的问题如题。
平台:64位Windows 7旗舰版+IAR7.5[查Help显示为7.3.xxx]
工具:MBED+串口调试助手
此文的目的是为了帮助网友们更好的理解MBED的方便和LPC824的易配置和使用,当然不要将速度问题放在首位。
曾经在网上求助过,LPC824的内存不够了——原因是设置UART口时发生的,当时的想法是想改变UART的波特率——因为LPC的MBED默认的速率为9600,在这么低的串口速率下,主循环程序受此牵连很大,因此必须改变,至少152000吧。
但是,尽管在LPC824程序中看不到UART的设置,在P0_7是可以获得printf的信息显示在PC机的模拟串口上!并且在P0_18口可以有PC机输出讯息到LPC824,说明默认LPC824UART已经内设置,于是开始以下步骤查找设置的可能位置以便更改:
首先搜全项目中的关键字:9600,一通下来仅仅在注释中有——不成功!
其次搜baud,只有一个函数,但无法设定!
再其次查看与UART有关的.h文件——这是MBED最棒的地方——只有.h文档,结果没有UART只有SPI和Serial与其相关的.h文档,其中的Serial.h可以设置UART,但按照文档案例设置立马产生内存不够的错误提示无法编译!
经过前期的几次碰钉子,分析结果,意外的在搜Serial时发现了另一个UART设置程序:RawSerial.h
查看此函数也可以设置UART,并且有着与Serial.h相似[相同]的案例。于是乎就进行如下配置实验[初始希望两个口挨着,并且暂时没有使用的IO口,P0_16,17],定义对象和设置:
RawSerial prtOut(P0_16,P0_17);//TX,RX——此函数来自RawSerial.h
定义波特率:
prtOut.baud(115200);//——此函数来自SerialBase.h
事件发生了:
首先程序没有报错——存储不够的报警!其次在原来的GPIO口的P0_7,18没有了响应,尝试用P0_16-->模拟串口的RX,P0_17-->模拟串口的RX上,打开PC的模拟串口软件,将波特率设置到115200,熟悉的结果出现在窗口中。
一鼓作气波特率设置为194000、256000[此速率需要另外一款可以支持到256000的软件],一切Ok!
细看RawSerial.h,里面有1个字节的getc()和putc()的函数,给我在NXP单片机上处理二手老式GPS信号成为可能,4路ADC的设置也使手中老式的模拟出口的3轴加速度计采样有望。
总结:
1. 结果此UART的设置成功。
2. 在设置LPC824以及在K64F、KS22等可以表明MBED具有函数明确、设置简单[几乎都有案例语句]、可用性极强的开发工具。
3. LPC824的交叉开关再加上MBED的可用性,使得GPIO的设置就像FPGA[CPLD]一样,但比他们设置还要简单——也许玩单片机远远多于玩可编程阵列之故。
4. 最后也最有用的是学习过VS C++、VS C#的人入手可能会更容易,因为他的所有操作就是:
先定义对象、而后设置属性和方法,采用.连接符。当输入连接符.时,其对象可能的属性和方法都一一列出以供选择,输入(或[后,其变量自动列出以供选择。
看完此文,不想一试吗?唯一不足的就是,MBED支持的板和芯片还是有限的,没有的板或芯片只能寻找代替品或相似品,实在没有只能走老路了。
下边的照片一共使用了16个IO口,其中4路ADC,3路IO脉冲检测,2路PWM输出,1路脉冲输出,1对UART,4线串口LCD[带背光改造后的6903——仅仅1mA电流],定时器1个提供100uS基准,程序调成0.1S的控制时基,至少还有P0_10~15富裕。
|
-
-
LED是两路PWM共同控制率红LED互相渐变亮暗
-
简单说明
|