[N32G430] 【N32G430C8L7_STB开发板】串口打印

[复制链接]
1585|5
 楼主| dirty123 发表于 2024-4-22 21:44 | 显示全部楼层 |阅读模式
本帖最后由 dirty123 于 2024-4-22 21:45 编辑

      串口日志在我们平时开发中会经常用到,本篇讲述N32G430C8L7串口打印。
一.硬件接口
      开发板通过J5端子连接MCU,起到烧录口和串口连接的作用。在开发板原理图中可看到如下
1_串口连接.jpg

图1:串口连接

      查阅数据手册,N32G430C8L7 的串口引脚配置:PA9--TX,PA10--RX
2_硬件串口.jpg
图2:串口引脚配置


二.代码与配置
1.引脚初始化
  1. void GPIO_Configuration(void)
  2. {
  3.     GPIO_InitType GPIO_InitStructure;

  4.     /* Initialize GPIO_InitStructure */
  5.     GPIO_Structure_Initialize(&GPIO_InitStructure);   

  6.     /* Configure USARTx Tx as alternate function push-pull */
  7.     GPIO_InitStructure.Pin            = USARTx_TxPin;
  8.     GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
  9.     GPIO_InitStructure.GPIO_Alternate = USARTx_Tx_GPIO_AF;
  10.     GPIO_Peripheral_Initialize(USARTx_GPIO, &GPIO_InitStructure);   

  11.     /* Configure USARTx Rx as alternate function push-pull */
  12.     GPIO_InitStructure.Pin            = USARTx_RxPin;
  13.     GPIO_InitStructure.GPIO_Alternate = USARTx_Rx_GPIO_AF;
  14.     GPIO_Peripheral_Initialize(USARTx_GPIO, &GPIO_InitStructure);
  15. }
2.串口初始化,配置波特率
  1.     /* USARTy and USARTz configuration ------------------------------------------------------*/
  2.     USART_InitStructure.BaudRate            = 115200;
  3.     USART_InitStructure.WordLength          = USART_WL_8B;
  4.     USART_InitStructure.StopBits            = USART_STPB_1;
  5.     USART_InitStructure.Parity              = USART_PE_NO;
  6.     USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
  7.     USART_InitStructure.Mode                = USART_MODE_RX | USART_MODE_TX;

  8.     /* Configure USARTx */
  9.     USART_Initializes(USARTx, &USART_InitStructure);
  10.     /* Enable the USARTx */
  11.     USART_Enable(USARTx);
3.编译器配置。这里勾选上Use MicroLIB
3_编译器配置.jpg
图3:编译器配置

4.串口重映射,可用printf输出串口日志
  1. /**
  2. *\*\name    fputc.
  3. *\*\fun     retarget the C library printf function to the USART
  4. *\*\param   ch
  5. *\*\param   f
  6. *\*\return  none
  7. **/
  8. int fputc(int ch, FILE* f)
  9. {
  10.     USART_Data_Send(USARTx, (uint8_t)ch);
  11.     while (USART_Flag_Status_Get(USARTx, USART_FLAG_TXDE) == RESET)
  12.         ;

  13.     return (ch);
  14. }
5.在main函数加入串口日志
4_串口日志代码.jpg
图4:串口日志代码


三.编译烧录测试
      编译烧录后,打开串口,按RESET键开发板重启,可看到有日志输出,如下
5_日志输出.jpg
图5:日志输出


      至此,实现N32G430C8L7_STB开发板串口打印输出。


yinxiangxv 发表于 2024-4-28 16:56 | 显示全部楼层
USARTx_TxPin,这里的这个引脚在原理图中对应的是那个引脚呢?原理图中看到的是USART1?
yinxiangxv 发表于 2024-4-28 16:57 | 显示全部楼层
开发包中的文件里面有这个代码GPIO_InitStructure.Pin            = USARTy_TxPin;,那这里的USARTy对应原理图中的那个?
 楼主| dirty123 发表于 2024-4-28 23:27 | 显示全部楼层
yinxiangxv 发表于 2024-4-28 16:57
开发包中的文件里面有这个代码GPIO_InitStructure.Pin            = USARTy_TxPin;,那这里的USARTy对应原 ...

PA9,文章由粉红色标记。还有就是可以自己顺着原理图理,结合硬件知道SDK这样配置才可打印
xysr007 发表于 2024-5-8 13:52 | 显示全部楼层
我用 vscode编译,没有 use MicroLIB 这个选项,怎么重定向
chenqianqian 发表于 2024-5-9 08:05 来自手机 | 显示全部楼层
不用重定向也可以自己实现,用C语言的格式化字符串函数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

138

帖子

1

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