在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
本帖最后由 zhjb1 于 2016-7-26 21:56 编辑
从USB口模拟UART确实方便,但想自己读取制定设备的数据则有些不便,此次实验未解决原题目设想的从GPS读取数据的问题。看API文档,发现UART4没有对应的宏,否则需要自己编,先放弃。查手册,看到PTG10,11在ALT3模式下有UART3功能,组实验此。更改与UART设置有关的board.h中的
//The UART to use for debug messages.
#define BOARD_DEBUG_UART_TYPE DEBUG_CONSOLE_DEVICE_TYPE_UART
#define BOARD_DEBUG_UART_BASEADDR (uint32_t) UART0
#define BOARD_DEBUG_UART_CLKSRC SYS_CLK
#define BOARD_DEBUG_UART_CLK_FREQ CLOCK_GetCoreSysClkFreq()
#define BOARD_UART_IRQ UART0_RX_TX_IRQn
#define BOARD_UART_IRQ_HANDLER UART0_RX_TX_IRQHandler
3,4,6行中UART0改为UART3,其他不变。
将void BOARD_InitPins()函数中的增加:
//ALT3 for UART3 11_TX 10RX
PORT_SetPinMux(PORTB,10U,kPORT_MuxAlt3);
PORT_SetPinMux(PORTB,11U,kPORT_MuxAlt3);
结果信号就从UART3与PC联络了。
问题是,也许我的程序目前已很大了,不知哪个程序也改了UART的Clock,结果程序上设的波特率为115200,实际上需要将PC口的波特率设为57600才能正常收发。也就是我要在9600的GPS上读取信号需要将波特率设为19200——确实如此。照片如下:
接下来将是艰苦的GPS信号读取和处理的难题。此项实验后小车就可以开始组装了。
波特率不一致的问题已找到——有两处设置UART,删除一个重复的就Ok了。不过还是不明白的是,多次定义应该不会产生这个问题。也没有报错或警告。
|
-
设置19200,实际9600波特率
|