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

STM32CubeMX工程printf问题

1、不能打印输出的问题

利用STM32CubeMX创建了一个带FreeRTOS系统的工程,使能多线程保护。

然后在任务函数中调用了printf函数。

可是电脑的串口上没有信息输出,程序进入了硬件错误中断。

原来是因为自动生成的串口初始化函数MX_LPUART1_UART_Init中,只初始化了UART,没有调用初始化IO引脚的函数。

在后面加上IO引脚初始化函数就可以有打印输出了。

2、打印后程序进入了Error_Handler

调用printf()只打印了一次。

void StartDefaultTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask */
//	const char ch[]={"LED OFF~\r\n"};/* Infinite loop */for(;;){printf("LED1 on~\r\n");        //会进入STM32_LOCK_BLOCK,然后进入Error_HandlerHAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);osDelay(1000);//HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, sizeof(ch), 1000);	//不会进入STM32_LOCK_BLOCKprintf("LED1 off~\r\n");HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);osDelay(1000);}/* USER CODE END StartDefaultTask */
}

然后程序就调用了STM32_LOCK_BLOCK,进入Error_Handle。

百度说,因为 printf 需要对全局资源(如 stdout)进行保护,以防止同时写入时的数据竞争。而STM32CubeMX创建的工程使能了多线程保护功能。

最后,开启了Use MicroLIB,就不会出现了。

但编译会有警告:

  #warning Microlib does not provide mutex locks to guard against code that is not thread safe

相关文章:

  • 什么是 Angular 开发中的 Dumb components
  • 【Git】克隆主项目,并同时克隆所有子模块
  • 动态规划(3)——dp多状态问题Ⅰ
  • 【Rockchip系列】importbuffer_T 接口
  • Tomcat服务与运用
  • kafka测试
  • SpringAOP学习
  • 企业微信群发工具:精准营销与高效沟通的新篇章
  • [云服务器15] 全网最全!手把手搭建discourse论坛,100%完成
  • Oracle Data Guard备库清理归档脚本
  • Linux递归找出目录下最近被修改文件(最近一段时间内被修改过的最新文件)(最近修改文件、最新文件、查找文件)(监控目录、监控mysql文件)
  • 完美无敌Oracle RMAN备份脚本
  • VBA解除Excel工作表保护
  • spring装配笔记
  • Matplotlib 使用 LaTeX 渲染图表中的文本、标题和数学公式
  • Brief introduction of how to 'Call, Apply and Bind'
  • JavaScript的使用你知道几种?(上)
  • js对象的深浅拷贝
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue总结
  • yii2中session跨域名的问题
  • zookeeper系列(七)实战分布式命名服务
  • Zsh 开发指南(第十四篇 文件读写)
  • 闭包--闭包作用之保存(一)
  • 关于extract.autodesk.io的一些说明
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 记录:CentOS7.2配置LNMP环境记录
  • 解决iview多表头动态更改列元素发生的错误
  • 聚类分析——Kmeans
  • 浏览器缓存机制分析
  • 前嗅ForeSpider采集配置界面介绍
  • 如何设计一个比特币钱包服务
  • 事件委托的小应用
  • 优秀架构师必须掌握的架构思维
  • 原生Ajax
  • 阿里云ACE认证之理解CDN技术
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​插件化DPI在商用WIFI中的价值
  • ​第20课 在Android Native开发中加入新的C++类
  • !!Dom4j 学习笔记
  • # 数论-逆元
  • #VERDI# 关于如何查看FSM状态机的方法
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Charles)如何抓取手机http的报文
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (备份) esp32 GPIO
  • (翻译)terry crowley: 写给程序员
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四)activit5.23.0修复跟踪高亮显示BUG