打印
[MM32软件]

【MM32 eMiniBoard测评报告】二、UART2

[复制链接]
691|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 lisingch 于 2020-5-12 21:47 编辑

      在使用官文DEMO对UART1测试中出现了一些比较怪异的现象,实验中首先打开了串口助手软件,然后对例程进行编译下载,应该显示“UART OK!”,但实际上只显示了“UART”字样,准备通过串口助手发送“A”,点击发送后显示“串口号故障!自动修复中...”



折腾半天也没能解决,不知道是什么原因?MM32L073PF内部包含有两个串口:UART1、UART2,其中的UART2通过CN4引出。


于是就在CN4上连接了一只串口模块,并在DEMO基础上修改了程序。在程序移植上要注意一点,UART2是被挂在APB1上。

void uart_initwBaudRate(u32 bound)
{
        //GPIO端口设置
        GPIO_InitTypeDef GPIO_InitStructure;
        UART_InitTypeDef UART_InitStructure;

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE);//开启UART2时钟
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);  //开启GPIOA时钟
        
        //UART 初始化设置
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);

        UART_InitStructure.UART_BaudRate = bound;                                                        //串口波特率
        UART_InitStructure.UART_WordLength = UART_WordLength_8b;//字长为8位数据格式
        UART_InitStructure.UART_StopBits = UART_StopBits_1;                //一个停止位
        UART_InitStructure.UART_Parity = UART_Parity_No;                        //无奇偶校验位
        UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;//无硬件数据流控制
        UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx;        //收发模式

        UART_Init(UART2, &UART_InitStructure);                                                                 //初始化串口2
        UART_Cmd(UART2, ENABLE);                                                                               //使能串口2

        //UART1_TX   GPIOA.2
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                                                 //PA2
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                                //复用推挽输出
        GPIO_Init(GPIOA, &GPIO_InitStructure);                                                                //初始化GPIOA.2

        //UART1_RX          GPIOA.3初始化
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                                                        //PA3
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;        //浮空输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);                                                                //初始化GPIOA.3
}
int main(void)
{
        //delay_init();
        uart_initwBaudRate(115200);
        printf("\n\r MM32L073PF UART2 TEST ok!");
        while(1)
        {
        }
}


UART2正常工作了,这样可以方便其它的一些实验。
UART2.rar (254.18 KB)

使用特权

评论回复
沙发
天灵灵地灵灵| | 2020-5-12 23:47 | 只看该作者
几个串口都很好用。

使用特权

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

本版积分规则

99

主题

14990

帖子

17

粉丝