基于官方的有关例程:UART_TwoBoards_ComIT$ L6 m5 j' w; x6 x- D( J' w0 Q# Y6 r 该用意是使用两块板测试串口收发。& D) l4 z6 H% Q- r8 m$ B' Y 这个笔记由此而开始: 1.虚拟串口驱动的波折* ~% P7 b8 ]9 \: ]; W* r 安装ST相关驱动后,发现虚拟串口(VCP)在XP系统的AMD机器上不能正常使用,换台非AMD机就正常了,只好先这样了,需要虚拟串口时就换其它机器啦.( M' y* c" c$ j$ _* X; e 2.坏了UART1,改UART3 例程里用的UART1(PB6,PB7),折腾了几次,可能不太小心,觉得是把其中PB6玩坏了。只好准备改用UART3(PC10,PC11)。 UART3与板上的VCP通道接法: PC10 (TX) --- CN3 RX PC11 (RX) --- CN3 TX {) h& i! d8 N3 ]! X3 D' _ 3.没有“双板”,找“助手” 原例程的用意是使用“双板”测试串口收发。在只有一块板,当然可以借助PC端的“串口助手”软件来测试。 4.测试主要过程及现象: 串口助手准备好后,0 ~+ ^4 ?2 R( C% U4 C 按NUCLEO板的黑色按纽,复位,绿色LED闪动( s6 E( J. g; N+ q6 k 再按NUCLEO板的蓝色按纽,从串口发出一串字符“ ****UART_TwoBoards_ComIT****”,重复3次;绿色LED熄灭; q; ~: E. Q: W/ k 在串口助手上可以看到对应的字符“ ****UART_TwoBoards_ComIT****”5 X: X6 m* r6 _6 N$ L0 | 在串口助手上把收到的一列字符,原样发回到NUCLEO板2 o. R# {8 C) l1 Y# O0 A1 l2 J 过片刻,NUCLEO板上的绿LED重新亮起,说明收到了数据,并正确;如果LED是慢速闪动,那么肯定收到的字符串是不太一样的,认为是有错误的。(多个空格或少个空格,都不行,太过份了!) 串口的发送接收测试完毕!1 y ]+ o( a7 A1 z! L 改变波特率的测试:除9600外,还把波特率分别提高到19200,38400,56000(我的助手只有这么高了),都OK!! ~" V: t6 g# l* Z" O 3 C2 \$ B1 k' A+ U( Q( X9 ?( K 详情可见源码., K8 v7 I4 }% I4 ] ( I. I; R) } U8 Y( u ************3 Q+ C t/ l) n main.h 里的原文及修改后的5 y) o6 ?3 ?! x% ^. [ /* User can use this section to tailor USARTx/UARTx instance used and associated resources */ /* Definition for USARTx clock resources */% F4 b2 |! T8 ~3 N+ W /* 8 ^/ h. X- v% N$ N ~' k$ C9 p #define USARTx USART1, O& N2 ?9 S: \. ]' z' P" s #define USARTx_CLK_ENABLE() __USART1_CLK_ENABLE() #define USARTx_RX_GPIO_CLK_ENABLE() __GPIOB_CLK_ENABLE() #define USARTx_TX_GPIO_CLK_ENABLE() __GPIOB_CLK_ENABLE() 4 r6 w1 q$ S4 _ #define USARTx_FORCE_RESET() __USART1_FORCE_RESET()6 k! Z, ` e7 Y4 e* ? #define USARTx_RELEASE_RESET() __USART1_RELEASE_RESET()+ K* v: o$ K( @/ c# {7 y */" _( [ X" V7 G# W9 y1 D i #define USARTx USART3 // 3 |
RE:【Nucleo板开发日志】串口折腾记(虚拟串口与UART3的对话)
RE:【Nucleo板开发日志】串口折腾记(虚拟串口与UART3的对话)
回复:【Nucleo板开发日志】串口折腾记(虚拟串口与UART3的对话)
RE:【Nucleo板开发日志】串口折腾记(虚拟串口与UART3的对话)
RE:【Nucleo板开发日志】串口折腾记(虚拟串口与UART3的对话)
RE:【Nucleo板开发日志】串口折腾记(虚拟串口与UART3的对话)