[MM32软件] 【MM32 eMiniBoard测评报告】+ 4、串口发送

[复制链接]
 楼主| Cjy_JDxy 发表于 2020-4-23 20:25 | 显示全部楼层 |阅读模式
今晚搞了一下串口1发送:
原理图:
4.jpg
代码:
void UartInit_Loop(void)
{

    //GPIO¶Ë¿ÚÉèÖÃ
    GPIO_InitTypeDef GPIO_InitStructure;
    UART_InitTypeDef UART_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);        //ʹÄÜUART1
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);  //¿ªÆôGPIOAʱÖÓ

    //UART1 NVIC ÅäÖÃ

    //UART ³õʼ»¯ÉèÖÃ
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);


    UART_InitStructure.UART_BaudRate = 115200;//´®¿Ú²¨ÌØÂÊ
    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(UART1, &UART_InitStructure); //³õʼ»¯´®¿Ú1
    UART_Cmd(UART1, ENABLE);                    //ʹÄÜ´®¿Ú1

    //UART1_TX   GPIOA.9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸´ÓÃÍÆÍìÊä³ö
    GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.9

    //UART1_RX          GPIOA.10³õʼ»¯
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿ÕÊäÈë
    GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.10  

    printf("UART OK!\r\n");
}
void uart_send(UART_TypeDef* UARTx,char c)
{
    UART_SendData(UARTx,(uint16_t)c);  
    while(1)
    {
        if(UART_GetITStatus(UARTx, UART_IT_TXIEN))
        {
            UART_ClearITPendingBit(UARTx, UART_IT_TXIEN);
            break;
        }
    }
}


int main(void)
{
    long int i;
       
    LED_Init();                                   //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
    UartInit_Loop();  //UART1µÄ·¢ËÍ£¬¿ÉÒÔͨ¹ý´®¿ÚÈí¼þ´òÓ¡UART OK
    while(1)              //ÎÞÏÞÑ­»·
    {
        //Uart2RxTest(UART2);//UART1µÄ½ÓÊÕ£¬ÔÚ´®¿ÚÈí¼þÖÐÊäÈë×Ö·û£¬¿ÉÒÔͨ¹ý´òÓ¡ÑéÖ¤½ÓÊÕµÄÊý¾ÝÊÇ·ñÕýÈ·
                        uart_send(UART1,0x55);
                        for(i=0;i<1300000;i++);
    }
}
效果图:

3.jpg
工程:
UART.rar (330.25 KB, 下载次数: 6)
gaoyang9992006 发表于 2020-4-25 08:50 | 显示全部楼层
你试试我那个串口助手,可以接收数据自动插入换行 serial_lite.zip (12.87 MB, 下载次数: 8)
 楼主| Cjy_JDxy 发表于 2020-4-25 09:03 | 显示全部楼层
gaoyang9992006 发表于 2020-4-25 08:50
你试试我那个串口助手,可以接收数据自动插入换行

谢谢!我试试
一路向北lm 发表于 2020-4-25 09:46 | 显示全部楼层
KEIL  把编码调一下,再复制发到论坛就不会乱码啦
gaoyang9992006 发表于 2020-4-25 17:10 | 显示全部楼层
试了用寄存器直接操作,也是这样,估计就是这样的吧。哎,好奇特。
gaoyang9992006 发表于 2020-4-25 17:13 | 显示全部楼层
官方寄存器的例子也是这样的。好神奇,还有官方库函数的例子寄存器名字也弄错了。串口例子的官方库函数版本中uart.c文件内CSR寄存器成员写成了ISR成员,虽然宏是一样的,但是没法说啊,应该是第一版,有BUG在所难免,希望后面更新后,能把这些错误更正了,顺便检查一下串口到底是什么问题,是硬件问题还是软件操作流程不科学导致的。
lxs0026 发表于 2020-4-25 18:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

20

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

20

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