当前位置: 首页 > news >正文

HC32F460串口重定向printf

使用的是旧版官方库2.2.0,如果用的是新版库的话需修改,应该差不多

01 确认使用的引脚

需要通过F460数据手册的2.2章节【引脚功能表】确认引脚在功能组里,最后一列不为空的引脚就是可使用的

image

根据分组自行确认使用的是UARTx

image

02 初始化串口

通过官方的串口轮询例程【uart_polling】修改,首先初始化要使用的串口

/* Print测试用 */
#define USART_BAUDRATE                  (115200ul)
#define USART2_CH                        (M4_USART2)
#define USART2_TX_PORT                   (PortD)
#define USART2_TX_PIN                    (Pin01)
#define USART2_TX_FUNC                   (Func_Usart2_Tx)/* USART2初始化 printf调试用 */
static void USART2_Initialize(void)
{uint32_t u32Fcg1Periph = PWC_FCG1_PERIPH_USART2;const stc_usart_uart_init_t stcInitCfg = {UsartIntClkCkNoOutput,UsartClkDiv_1,UsartDataBits8,UsartDataLsbFirst,UsartOneStopBit,UsartParityNone,UsartSampleBit8,UsartStartBitFallEdge,UsartRtsEnable,};/* Enable peripheral clock */PWC_Fcg1PeriphClockCmd(u32Fcg1Periph, Enable);/* Initialize USART IO *///PORT_SetFunc(USART2_RX_PORT, USART2_RX_PIN, USART2_RX_FUNC, Disable);PORT_SetFunc(USART2_TX_PORT, USART2_TX_PIN, USART2_TX_FUNC, Disable);/* Initialize UART */USART_UART_Init(USART2_CH, &stcInitCfg);/* Set baudrate */USART_SetBaudrate(USART2_CH, USART_BAUDRATE);USART_FuncCmd(USART2_CH, UsartTx, Enable);}

printf初始化使用的是hc32_utility.c中定义的函数UART_PrintfInit,该函数的参数分别是使用的串口通道,波特率以及前面所写的串口初始化函数:

extern void USART_Initialize(void)
{UART_PrintfInit(USART2_CH, USART_BAUDRATE, USART2_Initialize);	/* 串口2初始化 printf输出 *///printf("hello");
}

调用了上述官方的printf初始化函数就不需要改动重定向hc32_utility.c中的fputc函数了,因为默认就是重定向到UART_PrintfInit所使用的串口的.

库里原先写的fputc重定向函数如下:

/*********************************************************************************** \brief  Re-target fputc function.**** \param  [in] ch** \param  [in] f**** \retval int32_t********************************************************************************/
int32_t fputc(int32_t ch, FILE *f)
{(void)f;  /* Prevent unused argument compilation warning */return (Ok == UartPutChar(m_PrintfDevice, (char)ch)) ? ch: -1;
}

然后就可以通过使用printf函数在串口进行输出调试了


结束

http://www.wxhsa.cn/company.asp?id=1781

相关文章:

  • 一个我很喜欢的故事
  • paraview将所有时间步下的数据导入到同一个文件中
  • 代码托管新视野:打造本土化研发协作平台,赋能企业敏捷开发新范式
  • 202312_DASCTF_找找找
  • 浅谈博弈论
  • pyinstaller 打包
  • 基于STM32单片机与OV2640摄像头实现边缘检测
  • 替代FTP的国产传输软件哪个好?国产化文件传输工具推荐
  • 模拟运输振动试验台:保障产品运输安全的关键设备
  • 数据结构与算法-29.图-广度优先搜索
  • 政务外网和互联网啥关系
  • 什么是文件摆渡系统?从应用到优势全面解读!
  • wpf xaml数据绑定时,寻找数据源的几种方式 (RelativeSource)
  • 背负冲击试验机的设计原理与性能优化
  • 钢球落球试验机对汽车玻璃的测试应用
  • 基于STM32F047的ADS1299数据采集与低通滤波系统实现
  • LangChain
  • 军工企业涉密网文件导出用什么系统?答案在这里
  • Gateway 网关坑我! 被这个404 问题折腾了一年?
  • KUKA 机器人型号含义解析
  • LangChain DIfy区别
  • tricks
  • 英语_阅读_water in our body_待读
  • 2008-2025年各省高考真题含解析
  • allure报告中allure.title 如何去掉后方的参数化显示
  • 听歌体验直接拉满!推荐一款高颜值音乐播放器!
  • IoT设备
  • 前端岗、测试岗即将消亡!阿里菜鸟国际后端研发全员转全栈……
  • 达梦数据库- 定时备份其他模式下的部分表
  • KUKA机器人的WorkVisual编程软件(转载)