K32L2B3 开发板具备串行通讯的功能,在使用的例程的情况下,需按图1所示进行连接: USB转COM模块的 RX 接 PTD3(J1_6) USB转COM模块的 TX 接 PTD2(J2-4) USB转COM模块的 GND 接 GND(J2-14) 图1 引脚连接 在将执行代码文件uart_polling.HEX文件拖入虚拟盘后,即可进行测试。 在使用串口调试器的情况下,可按图2所示进行设置,其中波特率为115200 bps,数据格式8/N/1。 图2 参数设置及执行效果
程序的源代码如下: - #define DEMO_UART UART2
- uint8_t txbuff[] = "Uart polling example\r\nBoard will send back received characters\r\n";
- uint8_t rxbuff[20] = {0};
- int main(void)
- {
- uint8_t ch;
- uart_config_t config;
- BOARD_InitPins();
- BOARD_BootClockRUN();
- /*
- * config.baudRate_Bps = 115200U;
- * config.parityMode = kUART_ParityDisabled;
- * config.stopBitCount = kUART_OneStopBit;
- * config.txFifoWatermark = 0;
- * config.rxFifoWatermark = 1;
- * config.enableTx = false;
- * config.enableRx = false;
- */
- UART_GetDefaultConfig(&config);
- config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE;
- config.enableTx = true;
- config.enableRx = true;
- UART_Init(DEMO_UART, &config, DEMO_UART_CLK_FREQ);
- UART_WriteBlocking(DEMO_UART, txbuff, sizeof(txbuff) - 1);
- while (1)
- {
- UART_ReadBlocking(DEMO_UART, &ch, 1);
- UART_WriteBlocking(DEMO_UART, &ch, 1);
- }
- }
复制代码
在该程序的基础上,稍加修改即可构成一个对于工作在串行通讯模式下超声波测距模块的读写控制,该测距模块的外观如图3所示。 图3 超声波测距模块 该模块的工作原理为: 1)该模块工作在9600 bps 的波特率下; 2)在测距时,向模块发送指令“55”; 3)模块回返回4字节的信息,其中第1字节FF为引导码,第4字节则为校验码,第2字节和第3字节为十六进制的测距值,单位为毫米。 其测试效果如图4所示。 为信息“FF00 E6 E5” 为例,其校验码E5=FF+00+E6,而“00 E6”则为 230 mm。 在使用过程中,该测距模块与开发板的连接关系为: 测距模块的 RX 接 PTD3(J1_6) 测距模块的 TX 接 PTD2(J2-4) 测距模块的 VCC 接 3.3V(J3-4) 测距模块的 GND 接 GND(J2-14) 图4 测试效果 由于串行通讯口已被占用,故在使用时需由SLCD液晶屏来显示测距值,相应的主程序框架为: - uint8_t txbuff[] = "\0x55";
- uint8_t rxbuff[4] = {0};
- uint16_t s;
-
- int main(void)
- {
- ...
- UART_WriteBlocking(DEMO_UART, txbuff, sizeof(txbuff) - 1);
- // config.baudRate_Bps = 9600U;
- while (1)
- {
- UART_ReadBlocking(DEMO_UART, &ch,4);
- s= rxbuff[1]*256+ rxbuff[1];
- // 调用液晶屏显示结果
- SysTick_DelayTicks(500U); /* Delay 500 ms */
- UART_WriteBlocking(DEMO_UART, &ch, 1);
- }
- ...
- }
复制代码
|