打印
[单片机芯片]

CH579EVT评测+串口1测试

[复制链接]
1282|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1. H579EVT板卡 扩展板上的USB-CH340C串口的控制引脚被引出到了PA8PA9端口,原理图如下:

使用特权

评论回复
沙发
一路向北lm|  楼主 | 2020-1-20 14:41 | 只看该作者
2.APP分组中新建bsp_uart.cbsp_uart.h文件,该文件实现了对对串口1数据的发送与接收操作。
bsp_uart.c代码如下:
#include "bsp_uart.h"

UINT8 RxBuff[100];
UINT8 trigB;
//串口1初始化函数
void uart_module_init(void)
{  
    GPIOA_SetBits(GPIO_Pin_9);
    GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);                       
    GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);               
UART1_DefInit();

        UART1_BaudRateCfg(115200);
        R8_UART1_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR |  RB_FCR_FIFO_EN;               
    R8_UART1_LCR = RB_LCR_WORD_SZ;      
    R8_UART1_IER = RB_IER_TXD_EN;
    R8_UART1_DIV = 1;  
        UART1_ByteTrigCfg( UART_7BYTE_TRIG );
    trigB = 7;
    UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
    NVIC_EnableIRQ( UART1_IRQn );
       
}
//串口1接收中断函数
void UART1_IRQHandler(void)
{
    UINT8 i;
    switch( UART1_GetITFlag() )
    {
        case UART_II_LINE_STAT:      
            UART1_GetLinSTA();
            break;

        case UART_II_RECV_RDY:         
            for(i=0; i!=trigB; i++)
            {
                RxBuff[i] = UART1_RecvByte();
                UART1_SendByte(RxBuff[i]);
            }
            break;
        
        case UART_II_RECV_TOUT:         
            i = UART1_RecvString(RxBuff);
            UART1_SendString( RxBuff, i );
            break;
        
        case UART_II_THR_EMPTY:      
            break;
        
        case UART_II_MODEM_CHG:        
            break;
        
        default:
            break;
    }
}


使用特权

评论回复
板凳
一路向北lm|  楼主 | 2020-1-20 14:42 | 只看该作者
bsp_uart.h代码如下
#ifndef __BSP_UART_H__
#define __BSP_UART_H__

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

#endif


使用特权

评论回复
地板
一路向北lm|  楼主 | 2020-1-20 14:42 | 只看该作者
main.c代码如下:

#include "CH57x_common.h"
#include "bsp_rgb.h"
#include "bsp_uart.h"

UINT8 TxDate[]="This is CH579 Uart1 Test Demo!\r\n";
int main()
{   
          SystemInit();
    rgb_module_init();
          uart_module_init();
          UART1_SendString(TxDate, sizeof(TxDate)-1);
    while(1)
                {
                  RGB_R_ON;
                        mDelaymS(500);
                        RGB_R_OFF;
                        mDelaymS(500);               
                }                       
}


使用特权

评论回复
5
一路向北lm|  楼主 | 2020-1-20 14:43 | 只看该作者
4.下载到开发板,重启可看到串口助手打印”This is CH579 Uart1 Test Demo!”,通过串口助手发送AT字符,在串口1中断可以正确接收。

使用特权

评论回复
6
wangst416| | 2020-2-22 20:05 | 只看该作者
哎 怎么说那~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

276

主题

3803

帖子

76

粉丝