52832 不使用micro_lib ,同时使用AC6编译器且使用printf问题

1. 因为我的工程用AC6是因为要跑自己的C 和 TensorFlow lite micro. 所以是C,C++混合的工程,但是一直没法打印,所以写一个总结。

基本说明: micro_lib这种情况不要选,因为存在C++文件

第一个坑:

第二个坑:网上大部分教程的重定向printf代码是

__ASM(".global __use_no_semihosting");//??HAL????,?????????bug
//??????????,???????????????,??
int _ttywrch(int ch)    
{ch=ch;return ch;
}//??????????                 
//struct __FILE 
//{ 
//	int handle; 
//	/* Whatever you require here. If the only file you are using is */ 
//	/* standard output using printf() for debugging, no file handling */ 
//	/* is required. */ 
//}; FILE __stdout;     //??_sys_exit()??????????    
void _sys_exit(int x) 
{ x = x; 
} int fputc(int ch, FILE *f){      // usart_data_transmit(USART0, (uint8_t)ch);  //????????// while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));//??????app_uart_put(ch);return ch;
}

某些情况下是可以的(我在52832官方demo这么写是可以的,但是我加了tensorflow lite mirco以后,打印不正常)

换一下代码后正常(串口发送哪个,要换成自己的):

__ASM(".global __use_no_semihosting");//_swi//__ASM(".global _main_redirection");const char __stdin_name[150];const char __stdout_name[150];const char __stderr_name[150];typedef int FILEHANDLE;typedef unsigned int clock_t;    /* cpu time type */typedef unsigned int time_t;     /* date/time in unix secs past 1-Jan-70 */extern FILE __stdout; //???????,??printf?fopen?fclose????????????????????,???????????????,??????????????void _sys_exit(int status)
{while(1);
}FILEHANDLE _sys_open(const char *name, int openmode)
{return 0;
}int _sys_close(FILEHANDLE fh)
{return 0;}int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode){return 0;}int _sys_read(FILEHANDLE fh, unsigned char*buf, unsigned len, int mode){return 0;}int _sys_istty(FILEHANDLE fh){return 0;}int _sys_seek(FILEHANDLE fh, long pos){return 0;}int _sys_ensure(FILEHANDLE fh){return 0;}long _sys_flen(FILEHANDLE fh){return 0;}int _sys_tmpnam(char *name, int fileno, unsigned maxlength){return 0;}void _ttywrch(int ch){}time_t time(time_t *t){return 0;}int remove(const char *filename){return 0;}int rename(const char *oldname, const char *newname){return 0;}int system(const char *command){return 0;}char *_sys_command_string(char *cmd, int len){return 0;}clock_t clock(void){return 0;}//???fputc?? int fputc(int ch, FILE *f){app_uart_put((unsigned char)ch);return ch;}

第三个,写自己的打印函数;

#include <stdarg.h>
#include <string.h>#define TX_BUF_LEN  256     /* ???????,???????? */
uint8_t TxBuf[TX_BUF_LEN];  /* ?????                       */
void MyPrintf(const char *__format, ...)
{va_list ap;va_start(ap, __format);/* ??????? */memset(TxBuf, 0x0, TX_BUF_LEN);/* ??????? */vsnprintf((char*)TxBuf, TX_BUF_LEN, (const char *)__format, ap);va_end(ap);int len = strlen((const char*)TxBuf);/* ??????? */for (int i = 0; i < len; i++){app_uart_put( TxBuf[i]);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【pytorch】内容链接汇总

pytorch报错部分 链接备注RuntimeError: one of the variables needed for gradient computation has been modified代码报错姿态估计hrnet报错&#xff1a;ModuleNotFoundError: No module named ‘nms.cpu_nms‘HRNetRuntimeError: Invalid device string: ‘0‘gpuexpected…

windows 避免电脑强制息屏

许多打工人的电脑被公司设置了隔一段时间没有操作&#xff0c;就会自动息屏&#xff0c;如何避免这种事发生呢 方案一 自动操作鼠标的软件 如果能自由安装软件&#xff0c;可以下载自动移动鼠标的软件&#xff0c;设置鼠标每隔多长时间做一次什么操作&#xff0c;防止锁屏 方…

LIUNX:系统编程动态库加载(1)

目录 操作系统角度理解 如何加载 怎么管理库 编址 操作系统角度理解 如何加载 首先main想要运行&#xff0c;首先要为main创建task_struct和mm_struct&#xff0c;然后将main的代码和数据加载到内存&#xff0c;将main的代码通过页表映射到mm_struct的正文代码段&#xff0…

村庄集中式生活废水处理设备技术工艺

诸城市鑫淼环保小编带大家了解一下村庄集中式生活废水处理设备技术工艺 工艺&#xff1a; 生物接触氧化法指由浸没在污水中的填料和曝气系统构成的污水处理方法&#xff0c;在有氧条件下&#xff0c;污水与填料表面的生物膜广泛接触&#xff0c;使污水得到净化。填料指在污水处…

【C++】循环语句中引起的循环引用问题

在C中&#xff0c;循环语句&#xff08;如for, while, do-while&#xff09;与引用的结合使用可能会引发一些特定的问题&#xff0c;尤其是当涉及到循环引用或者在循环中不当管理引用时。 1. 循环引用问题 循环引用通常与智能指针&#xff08;如std::shared_ptr&#xff09;相…

leetcode-比较版本号-88

题目要求 思路 1.因为字符串比较大小不方便&#xff0c;并且因为需要去掉前导的0&#xff0c;这个0我们并不知道有几个&#xff0c;将字符串转换为数字刚好能避免。 2.当判断到符号位的时候加加&#xff0c;跳过符号位。 3.判断数字大小&#xff0c;来决定版本号大小 4.核心代…

掌握Midjourney视觉艺术的关键提示词指南

在数字艺术的海洋中&#xff0c;Midjourney以其独特的图像生成能力脱颖而出&#xff0c;为艺术家和创意工作者提供了前所未有的创造自由。要真正掌握这一工具&#xff0c;理解并有效使用各种提示词至关重要。本文将深入探索Midjourney中的“风格关键词”、“场景关键词”、“视…

Unity | 优化专项-包体 | 字体

1. 字体包体占用 常用汉字字体文件大小通常在 10M~12M 左右&#xff0c;大概包含常见汉字 3.5w 个。我国汉字有大约将近十万个&#xff0c;全字库的大小对于游戏包体是灾难性的 在小游戏中&#xff0c;即使是常见汉字&#xff0c;大小也足以影响小游戏总包体&#xff0c;进而…

大模型日报2024-04-27

大模型日报 2024-04-27 大模型资讯 AI未来趋势&#xff1a;检索增强型生成&#xff08;RAG&#xff09;技术融合语言与搜索 摘要: 随着专家暗示大型语言模型&#xff08;LLMs&#xff09;的技术发展接近极限&#xff0c;检索增强型生成&#xff08;RAG&#xff09;成为关注焦点…

qmt教程2----订阅单股行情,提供源代码

链接 qmt教程2----订阅单股行情&#xff0c;提供源代码 (qq.com) qmt教程1---qmt安装&#xff0c;提供下载链接 今天我重新封装了全部qmt的内容&#xff0c;包括数据&#xff0c;交易 qmt交易 我本来打算全部上次git的&#xff0c;但是考虑到毕竟是实盘的内容&#xff0c;就放…

决策树学习笔记

一、衡量标准——熵 随机变量不确定性的度量 信息增益&#xff1a;表示特征X使得类Y的不确定性减少的程度。 二、数据集 14天的打球情况 特征&#xff1a;4种环境变化&#xff08;天气、温度等等&#xff09; 在上述数据种&#xff0c;14天中打球的天数为9天&#xff1b;不…

抖音电商商品---直播间小黄车

直播间小黄车接口请求方式 K1YlMjAlMjAlMjBqbnRvb2w 直播间小黄车接口请求结果 {"msg":"","st":0,"data":{"ProductList":[{"商品标题":"明星同款百搭潮流增高7.5公分透气女士老爹鞋{sss}","封…

如何通过4G DTU实现现场仪表的分布式采集并发布到MQTT服务器

提供一份资料文档以一个具体的工程案例来讲解&#xff0c;如何通过4G DTU实现现场仪表的分布式采集并发布到MQTT服务器。采用的数据采集模块是有人物联的边缘采集4G DTU&#xff0c;采集多个多功能电表和远传水表的数据&#xff0c;通过MQTT通讯的型式传送给MQTT服务器&#xf…

【Vue3+Tres 三维开发】01-HelloWord

预览 什么是TRESJS 简单的说,就是基于THREEJS封装的能在vue3中使用的一个组件,可以像使用组件的方式去创建场景和模型。优势就是可以快速创建场景和要素的添加,并且能很明确知道创景中的要素构成和结构。 项目创建 npx create-vite@latest # 选择 vue typescript安装依赖…

【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第1节-阿里云配置+MQTT.fx模拟与使用AT命令发布订阅消息

本节目标&#xff1a;通过MQTT.fx模拟连接或通过串口连接ESP8266发送AT命令&#xff0c;实现阿里云物联网平台发送数据同时接收数据&#xff0c;IOT studio界面显示数据。具体来说&#xff1a;使用ESP8266 ESP-01来连接网络&#xff0c;获取设备数据发送到阿里云物联网平台并显…

情绪:本来无一物,何处惹尘埃

最近身边的朋友有提到最近因为各种事情&#xff0c;情绪不太稳定&#xff0c;心里开始出现不平稳的波动&#xff0c;情绪起伏有点大&#xff0c;在学习尝试调整。 我说&#xff0c;这其实非常好&#xff0c;因为你开始觉知了自己的波动&#xff0c;发现了自己的变化&#xff0c…

ElasticSearch批处理

在刚才的新增当中&#xff0c;我们是一次新增一条数据。那么如果你将来的数据库里有数千上万的数据&#xff0c;你一次新增一个&#xff0c;那得多麻烦。所以我们还要学习一下批量导入功能。 也就是说批量的把数据库的数据写入索引库。那这里的需求是&#xff0c;首先利用mybat…

C语言如何将指针数组作为函教的参教?

一、问题 如何将指针数组作为函数的参数呢&#xff1f; 二、解答 使⽤字符指针作为函数的参数传递字符串&#xff0c;⼀般传递的只是⼀个字符串&#xff0c;如何传递多个字符串呢&#xff1f;有⼈会想到⼆维数组&#xff0c;但是⼆维数组存储多字符串太浪费存储空间&#xff0…

哈密顿函数和正则方程

9-2 哈密顿函数和正则方程_哔哩哔哩_bilibili 拉格朗日函数是广义坐标和广义速度的函数 哈密顿函数是广义坐标和广义动量的函数 拉格朗日函数经过勒让德变换得到哈密顿函数

【python技术】akshare爬取A股最新业绩预告保存进excel的简单示例

最近A股上市公司陆续在出年报和一季度报了&#xff0c; 心里寻思着要不用python把这些数据爬取下来分析下&#xff0c;说干就干。 数据来源网站东方财富&#xff1a;https://data.eastmoney.com/bbsj/ 我这个人比较懒&#xff0c;直接用akshare封装的方法来搞定 之前用aksha…