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

基于CH32V203F8P6 interface_debug_print支持浮点格式输出

LibDriver PCF8563驱动

 

        最近在研究基于CH32V203F8P6 的LibDriver的驱动,开始以为LibDriver调试打印函数只能整数格式化输出,

LibDriver基于STM32F407的调试打印函数

/*** @brief     interface print format data* @param[in] fmt format data* @note      none*/
void pcf8563_interface_debug_print(const char *const fmt, ...)
{char str[256];uint16_t len;va_list args;memset((char *)str, 0, sizeof(char) * 256); va_start(args, fmt);vsnprintf((char *)str, 255, (char const *)fmt, args);va_end(args);len = strlen((char *)str);(void)uart_write((uint8_t *)str, len);
}

 但阅读BA121项目发现可以实现浮点数输出。

LibDriver基于CH32V203F8P6的调试打印函数

/*** @brief     interface print format data* @param[in] fmt format data* @note      none*/
void pcf8563_interface_debug_print(const char *const fmt, ...)
{char str[256];uint16_t len;va_list args;memset((char *)str, 0, sizeof(char) * 256);va_start(args, fmt);vsnprintf((char *)str, 255, (char const *)fmt, args);va_end(args);len = strlen((char *)str); // 获取字符串长度// 使用 UART 发送数据for (uint16_t i = 0; i < len; i++){USART_SendData(USART1, str[i]); // 假设使用 USART1while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); // 等待发送完成}
}

        为实现基于CH32V203F8P6的调试打印函数,需进行如图设置:

勾选Use float with nano printf (-u _printf_float),并应用

 

测试代码: 

void pcf8563_interface_debug_print(const char *const fmt, ...)
{char str[256];uint16_t len;va_list args;memset((char *)str, 0, sizeof(char) * 256);va_start(args, fmt);vsnprintf((char *)str, 255, (char const *)fmt, args);va_end(args);len = strlen((char *)str); // 获取字符串长度// 使用 UART 发送数据for (uint16_t i = 0; i < len; i++){USART_SendData(USART1, str[i]); // 假设使用 USART1while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); // 等待发送完成}
}
int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);SystemCoreClockUpdate();Delay_Init();USART_Printf_Init(115200);printf("SystemClk:%d\r\n", SystemCoreClock);printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );printf("This is printf example\r\n");while(1){pcf8563_interface_debug_print("V=%0.2f\n",0.14);//pcf8563_interface_debug_print("Hello CH32!\n");Delay_Ms(500);}
}

        在C/C++ Build->Settings->Tool Settings选项列表中单击GNU RISC-V Cross C Linker->Miscellaneous,然后在右侧Linker flags窗口,点击Add 按钮,添加命令行:“--print-memory-usage”,最后点击Apply and Close保存修改:

 

运行效果:

http://www.dtcms.com/a/293049.html

相关文章:

  • 模型优化-------模型压缩
  • Python之格式化Conda中生成的requirements.txt
  • timesFM安装记录
  • JavaWeb学习打卡10(HttpServletRequest详解应用、获取参数,请求转发实例)
  • PyTorch常用工具
  • 我的第一个开源项目 -- 实时语音识别工具
  • C++中的list(2)简单复现list中的关键逻辑
  • 水电站自动化升级:Modbus TCP与DeviceNet的跨协议协同应用
  • CMake实践:CMake3.30版本之前和之后链接boost的方式差异
  • 渗透部分总结
  • 从 COLMAP 到 3D Gaussian Splatting
  • vue2的scoped 原理
  • Flex/Bison(腾讯元宝)
  • 开源AI智能客服、AI智能名片与S2B2C商城小程序在客户复购与转介绍中的协同效应研究
  • 禁食时长与关键生物反应的相对强度对照表
  • syscall函数用法
  • Java 中 String 类的常用方法
  • JavaScript的进阶学习--函数和基本对象的解析
  • 16-MSTP
  • 加速度计输出值的正负号与坐标系正方向相反
  • 基于 Agent 的股票分析工具
  • Windows Server 设置MySQL自动备份任务(每日凌晨2点执行)
  • 洛谷刷题7..22
  • 贪心算法Day3学习心得
  • VBScript 拖拽文件显示路径及特殊字符处理
  • gitlab私服搭建
  • 根据数据,判断神经网络所需的最小参数量
  • 如何搭建appium工具环境?
  • 嵌入式学习-土堆目标检测(2)-day26
  • 浏览器解码顺序xss