本帖最后由 jinglixixi 于 2023-10-27 23:54 编辑
CW32L031开发板配有相应的串口及例程资源,以例程UART_Polling为例它可实现两板间的串行通讯。 若只有一个开发板,则可以通过串口模块与电脑相连来进行功能测试。 在开发板上配置的串行接口如图1所示,使用引脚与连接关系为: UART1_TXD (PA08) -- PCRX UART1_RXD (PA09) -- PCTX
图1 串行接口
其主程序的内容为: - int32_t main(void)
- {
- RCC_Configuration();
- GPIO_Configuration();
- UART_Configuration();
- USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, ARRAY_SZ(TxRxBuffer) - 1);
- while(1)
- {
- TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
- USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, TxRxBufferSize);
- }
- }
在运行该程序时,其输出信息见图2所示。当发送相应信息时,则会原文回应,见图3所示,这就验证该程序的数据收发功能。 图2 接收发送信息
图3 原文回应
以此为基础,在按键和串口型超声波测距模块的配合下,可实现物距的检测功能。
检测结果:FF 07 C5 CB = 1989 mm 检测结果:FF 06 15 1A = 1557 mm
发送指令:0x55
在进行测试时,以串口发送检测指令0x55,则可得到相应的检测反馈信息,见图4所示。 其中: FF是识别符 07 C5是检测值,换算为数据值数是1989,单位为mm,即1.989米。 CB是校验码,它等于FF+07+C5。
图4 测试结果
在模拟方式下,其发送检测指令与接收模拟信息的主程序为: - int32_t main(void)
- {
- InitTick(8000000);
- RCC_Configuration();
- GPIO_Configuration();
- UART_Configuration();
- USART_SendData_8bit(DEBUG_USARTx, 0x55);
- while(1)
- {
- TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
- USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, TxRxBufferSize);
- SysTickDelay(500);
- USART_SendData_8bit(DEBUG_USARTx, 0x55);
- }
- }
经检测,其测试效果如图5所示,说明在进入超声波测距模块后是可以运转起来的。 图5 模拟测试
在添加LCD5110显示屏的情况下,其检测与显示的主程序为: - int32_t main(void)
- {
- unsigned int l,n=0;
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- RCC_HSI_Enable(RCC_HSIOSC_DIV6);
- __RCC_GPIOC_CLK_ENABLE();
- InitTick(8000000);
- RCC_Configuration();
- GPIO_Configuration();
- UART_Configuration();
- LCD5510_CONFIG();
- LED_SetHigh();
- CS_SetLow();
- LCD5510_Init();
- LCD_prints(0,0,"CW32L031");
- LCD_prints(2,1,"0.000 m");
- LCD_printc(0,1,'L');
- LCD_printc(1,1,'=');
- l=0;
- USART_SendData_8bit(DEBUG_USARTx, 0x55);
- while(1)
- {
- TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
- if(TxRxBufferSize>0)
- {
- l=TxRxBuffer[1]*256+TxRxBuffer[2];
- }
- else
- {
- l=0;
- }
- LCD_printc(2,1,l/1000+'0');
- LCD_printc(4,1,l%1000/100+'0');
- LCD_printc(5,1,l%100/10+'0');
- LCD_printc(6,1,l%10+'0');
- SysTickDelay(5000);
- USART_SendData_8bit(DEBUG_USARTx, 0x55);
- }
- }
经程序的编译与下载,其检测效果如图6至图8所示。 图6 检测右侧距离
图7 检测左侧距离
图8 检测上方距离
|