[MM32软件]【灵动微电子MM32F5330测评】+printf 输出调试

一:实验目的
利用板载的CH340串口芯片完成单片机的串口通讯功能,并且数据发送的数据在PC端的串口工具中显示。
uart通用异步收发器介绍:
  通用异步收发器(UART)可以灵活地与外部设备进行全双工数据交换。通过分数波特率发生器, UART可以选择宽范围的波特率。异步单向通信和半双工单线通信,以及调制解调器( CTS/RTS)操作、 IrDA 红外功能也能够被支持。另外, UART 也支持多处理器之间的通信。对于高速数据通信,可以通过使用多缓冲器配置的 DMA 方式来实现。
二:硬件部分:

通过官方提供的原理图,得知需要使用的硬件引脚为PA9,PA10;查阅一下手册引脚定义:

可以配置为uart1 或者是usar1 两种不同的串口通讯模式,这里我选用的是uart1的通讯方式:
串口的基本配置流程如下:
步骤1:串口时钟使能,GPIO时钟使能,使能串口时钟:   
步骤2:GPIO端口模式设置:   //此处注意使用的IO口是否正常,是否需要映射。
步骤3:串口参数初始化://初始化,波特率,停止位,校验位等信息
步骤4:开启中断并且初始化NVIC(如果需要开启接收中断才需要这个步骤)
步骤5:使能串口:  
三:软件代码部分:

    GPIO_InitTypeDef GPIO_InitStruct;
    UART_InitTypeDef UART_InitStruct;
            NVIC_InitTypeDef  NVIC_InitStruct;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);

    UART_StructInit(&UART_InitStruct);
    UART_InitStruct.BaudRate      = Baudrate;
    UART_InitStruct.WordLength    = UART_WordLength_8b;
    UART_InitStruct.StopBits      = UART_StopBits_1;
    UART_InitStruct.Parity        = UART_Parity_No;
    UART_InitStruct.HWFlowControl = UART_HWFlowControl_None;
    UART_InitStruct.Mode          = UART_Mode_Rx |  UART_Mode_Tx ;
    UART_Init(UART1, &UART_InitStruct);

       
//    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
//    USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);       
       
       
//    UART_Cmd(UART1, ENABLE);

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_7);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_7);

    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_9;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStruct);
               
    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_10;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStruct);               
               
//    NVIC_InitStruct.NVIC_IRQChannel = UART1_IRQn;
//    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
//    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
//    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
//    NVIC_Init(&NVIC_InitStruct);
    UART_Cmd(UART1, ENABLE);       

这里将串口1映射到Printf函数中:配置信息如下:

int fputc(int ch, FILE *f)
{
    UART_SendData(UART1, (uint8_t)ch);

    while (RESET == UART_GetFlagStatus(UART1, UART_FLAG_TXC))
    {
    }

    return (ch);
}
 

主函数:添加printf输出信息
    while (1)
    {
/* 检测当前得按键输入状态*/
                        JudgeInputData();
/*只有在按键,触发得状态下,才允许进入LED得闪烁*/                       
                        if(blink_flag == 1)
                        {
                                temp ++ ;
                                if(temp >5) temp = 0 ;
                                GPIO_LED_blink(temp);
                               
                        }               
                        GPIO_IO_Toggle(GPIOB,GPIO_Pin_11);
                        PLATFORM_DelayMS(500);
//                        printf("\r\nTest %s", __FUNCTION__);
 
                        printf("\r\n21IC lun tan ce ping huo dong   autor cong cong");       
    }
实现效果截图

 


---------------------
作者:聪聪哥哥
链接:https://bbs.21ic.com/icview-3387474-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值