[单片机芯片] CH579EVT评测+串口1测试

[复制链接]
361|5
 楼主 | 2020-1-20 14:41 | 显示全部楼层 |阅读模式
1. H579EVT板卡 扩展板上的USB-CH340C串口的控制引脚被引出到了PA8PA9端口,原理图如下:
1.png

使用特权

评论回复
 楼主 | 2020-1-20 14:41 | 显示全部楼层
2.APP分组中新建bsp_uart.cbsp_uart.h文件,该文件实现了对对串口1数据的发送与接收操作。
bsp_uart.c代码如下:
  1. #include "bsp_uart.h"

  2. UINT8 RxBuff[100];
  3. UINT8 trigB;
  4. //串口1初始化函数
  5. void uart_module_init(void)
  6. {  
  7.     GPIOA_SetBits(GPIO_Pin_9);
  8.     GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);                       
  9.     GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);               
  10. UART1_DefInit();

  11.         UART1_BaudRateCfg(115200);
  12.         R8_UART1_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR |  RB_FCR_FIFO_EN;               
  13.     R8_UART1_LCR = RB_LCR_WORD_SZ;      
  14.     R8_UART1_IER = RB_IER_TXD_EN;
  15.     R8_UART1_DIV = 1;  
  16.         UART1_ByteTrigCfg( UART_7BYTE_TRIG );
  17.     trigB = 7;
  18.     UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
  19.     NVIC_EnableIRQ( UART1_IRQn );
  20.        
  21. }
  22. //串口1接收中断函数
  23. void UART1_IRQHandler(void)
  24. {
  25.     UINT8 i;
  26.     switch( UART1_GetITFlag() )
  27.     {
  28.         case UART_II_LINE_STAT:      
  29.             UART1_GetLinSTA();
  30.             break;

  31.         case UART_II_RECV_RDY:         
  32.             for(i=0; i!=trigB; i++)
  33.             {
  34.                 RxBuff[i] = UART1_RecvByte();
  35.                 UART1_SendByte(RxBuff[i]);
  36.             }
  37.             break;
  38.         
  39.         case UART_II_RECV_TOUT:         
  40.             i = UART1_RecvString(RxBuff);
  41.             UART1_SendString( RxBuff, i );
  42.             break;
  43.         
  44.         case UART_II_THR_EMPTY:      
  45.             break;
  46.         
  47.         case UART_II_MODEM_CHG:        
  48.             break;
  49.         
  50.         default:
  51.             break;
  52.     }
  53. }
复制代码


使用特权

评论回复
 楼主 | 2020-1-20 14:42 | 显示全部楼层
bsp_uart.h代码如下
  1. #ifndef __BSP_UART_H__
  2. #define __BSP_UART_H__

  3. #include "CH57x_common.h"
  4. void uart_module_init(void);

  5. #endif
复制代码


使用特权

评论回复
 楼主 | 2020-1-20 14:42 | 显示全部楼层
main.c代码如下:

  1. #include "CH57x_common.h"
  2. #include "bsp_rgb.h"
  3. #include "bsp_uart.h"

  4. UINT8 TxDate[]="This is CH579 Uart1 Test Demo!\r\n";
  5. int main()
  6. {   
  7.           SystemInit();
  8.     rgb_module_init();
  9.           uart_module_init();
  10.           UART1_SendString(TxDate, sizeof(TxDate)-1);
  11.     while(1)
  12.                 {
  13.                   RGB_R_ON;
  14.                         mDelaymS(500);
  15.                         RGB_R_OFF;
  16.                         mDelaymS(500);               
  17.                 }                       
  18. }
复制代码


使用特权

评论回复
 楼主 | 2020-1-20 14:43 | 显示全部楼层
4.下载到开发板,重启可看到串口助手打印”This is CH579 Uart1 Test Demo!”,通过串口助手发送AT字符,在串口1中断可以正确接收。
002.png

使用特权

评论回复
| 2020-2-22 20:05 | 显示全部楼层
哎 怎么说那~~

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表