首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
uart 打印 重定向 fputc putchar
2024-09-06
笔记:stm32 printf重定向到UART疑点解析
在调试过程中往往需要通过打印来看系统运行状态:在STM32平台上,打印重定向有多种实现方案:其一是编译时使用keil自带的MacroLIB,据说这个库对一些C语言基础设施做了新的实现,代码结构更加紧凑:但这种库没法取得源码,所以就不能进一步研究具体怎么实现的,很遗憾:还有一种实现方案是使用标准C(I/O)库,但这种方式下要注意修改避免使用semihosting(半主机模式),下面对两种方案做以简单说明. 方案一 使用mcrolib库: 1.首先在option里边勾选mcrolib 2.重写put
使用SWO代替UART,实现Printf打印功能
JTAG接口中,有个SWO引脚,一直没有在意,也没有去研究过是干嘛用的.直到发现ST-LINK V2-1上也有个SWO引脚,于是去研究学习它的作用,用起来相比UART方得便多. 本文内容已经整理成PDF,提供给大家下载: https://pan.baidu.com/s/1EhJulPbD6Cp5OohzpQY0Fg&shfl=sharepset 提取码:h43c 1 写在前面 SWO:Serial Wire Output,串行线输出 SWV:Serial Wire Viewer,串行线查看
STM32中如何对printf函数重定向
通过USART1向计算机的串口调试助手打印数据,或者接收计算机串口调试助手的数据,接下来我们现STM32工程上的printf()函数,方便用于程序开发中调试信息的打印. 方法一:使用MicroLIB库 1.1 KEIL-MDK中的Use MicroLIB选项 在MDK开发环境中 MicroLib是缺省c库的备选库,它可装入少量内存中,与嵌入式应用程序配合使用,且这些应用程序不在操作系统中运行. MicroLib进行了高度优化以使代码变得很小,功能比缺省c库少,不具备某些ISO c特性,部分库函数
C和指针 第十五章 文件I/O
stdio.h中包含了声明FILE结构 struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前缓冲区的相对位置 char *_base; //指基础位置(应该是文件的其始位置) int _flag; //文件标志 int _file; //文件的有效性验证 int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取 int _bufsiz; //文件的大小 char *_tmpfname; //临时文件名 }; FILE作为一种结
[apue] 标准 I/O 库那些事儿
前言 标准 IO 库自 1975 年诞生以来,至今接近 50 年了,令人惊讶的是,这期间只对它做了非常小的修改.除了耳熟能详的 printf/scanf,回过头来对它做个全方位的审视,看看到底优秀在哪里. 打开关闭 要想使用 IO 流就必需打开它们.三个例外是标准输入 stdin.标准输出 stdout.标准错误 stderr,它们在进入 main 时就准备好了,可以直接使用,与之对应的文件描述符分别是 STDIN_FILENO / STDOUT_FILENO / STDERR_FILENO.除
STM32调试大法 之 串口通讯
开发过程经常需要查看某些特定参数.通常的方法可以使用paintf进行打印输出,观察具体的变量值.STM32内部集成有USART的串口功能,可以通过串口直接输出到电脑(上位机).使用非常方便,基本不需要不需要写代码,只要配置一下就可以使用. 简单设置就可以看到上面的效果 配置方法: 1.重定向printf的输出函数 int fputc(int ch, FILE *f) 2.配置STM32F10x的USART串口 重定向方法 stdio.h 的输出内容 int fputc(int ch, FILE
linux 标准io笔记
三种缓冲 1.全缓冲:在缓冲区写满时输出到指定的输出端. 比如对磁盘上的文件进行读写通常是全缓冲的. 2.行缓冲:在遇到'\n'时输出到指定的输出端. 比如标准输入和标准输出就是行缓冲, 回车后就会进行相应的I/O操作. 3.无缓冲:有什么就输出什么. 比如标准错误输出, 出错时立即显示出来. 设置缓冲方式的函数有两个,分别为setbuf,setvbuf 可用fflush立即输出,不管缓冲区是否达到输出标准 打开.关闭 1.FILE *fopen(const char *restrict pat
windows7命令帮助大全
有关某个命令的详细信息,请键入 HELP 命令名ASSOC 显示或修改文件扩展名关联.ATTRIB 显示或更改文件属性.BREAK 设置或清除扩展式 CTRL+C 检查.BCDEDIT 设置启动数据库中的属性以控制启动加载.CACLS 显示或修改文件的访问控制列表(ACL).CALL 从另一个批处理程序调用这一个.CD 显示当前目录的名称或将其更改.CHCP 显示或设置活动代码页数.CHDIR 显示当前目录的名称或将其更改.CHKDSK 检查磁盘并显示状态报告.CHKNTFS 显示或修改启动时间
【转】BAT 批处理脚本 教程
第一章 批处理基础第一节 常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程.了解了大概意思后,我们正式开始学习.先看一个简单的例子!@echo offecho "欢迎来到非常BAT!"pause把上面的3条命令保存为文件test.bat或者test.cmd然后执行,他就会在屏幕上显示以下二行话:欢迎来到非
【工作笔记】BAT批处理学习笔记与示例
BAT批处理学习笔记 一.批注里定义:批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD,这些命令统称批处理命令. 二.常见的批处理指令: 命令清单: 1.REM 和 :: 2.ECHO 和 @ 3.PAUSE 4.ERRORLEVEL 5.TITLE 6.COLOR 7.mode 配置系统设备 8.GOTO 和 : 9.FIND.FINDSTR 10.START
BAT批量处理 命令
第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程.了解了大概意思后,我们正式开始学习.先看一个简单的例子!@echo offecho "欢迎来到非常BAT!"pause把上面的3条命令保存为文件test.bat或者test.cmd然后执行,他就会在屏幕上显示以下二行话:欢迎来到
嵌入式文件I/O操作
今天把这块的东西算是看完了.总结一下,(1)这里包括底层文件的I/O操作,实际上是系统调用函数借口,是基于文件描述符的文件操作:(2)还有标准I/O操作,是基于缓冲流的文件操作:还有(3)串口的操作,串口是设备文件“/dev”目录下. (1)基础的open(),read(),write(),sleek(),close(). (2)串口是需要先配置再使用 (3)fopen(),fdopen(),freopen(),fclose(),fread(),fwrite(),getc(),fgetc(
SAM4E单片机之旅——18、通过AFEC(ADC)获取输入的电压
很多时候,一个电压不仅仅需要定性(高电平或者低电平),而且要定量(了解具体电压的数值).这个时候就可以用到模数转换器(ADC)了.这次的内容是测量开发板搭载的滑动变阻器(VR1)的电压,然后把ADC转换的结果通过UART打印出来.同时,也简单介绍了校准的方法. SAM4E芯片中,ADC是由AFEC管理的.同时,AFEC可以使用一个多路复用器以选择需要转换的信号的通道,也可以通过平均多次ADC转换的结果以提高转换精确度. 一. 电路图 通过顺时针方向旋转该变阻器,PB1引脚电压将变大,其电压变化范
.bat脚本基本命令语法
目录批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1.REM 和 :: 2.ECHO 和 @ 3.PAUSE 4.ERRORLEVEL 5.TITLE 6.COLOR 7.mode 配置系统设备 8.GOTO 和 : 9.FIND 10.START 11.assoc 和 ftype 12.pushd 和 popd 13.CALL 14.shift 15.IF
BAT批处理(二)
在前一篇中已对BAT批处理基础作了一些总结,但是对于BAT批处理还有很多的知识点没有讲解到,比如DOS中的特殊符号:IF.FOR的使用:变量:更多的DOS命令等等.本文在前一篇的基础上继续对BAT批处理相关进行总结. 一.常用批处理内部命令介绍 二.常用特殊符号 三.循环:FOR命令详解 四.FOR命令中的变量 五.批处理中的变量 常用批处理内部命令介绍 1.REM 除了::符号,REM也为注释命令,一般用来给程序加上注解,该命令后的内容不被执行,但能回显.其次, :: 注释作用更简洁有效; 但
低功耗蓝牙4.0BLE编程-nrf51822开发(11)-蓝牙串口代码分析
代码实例:点击打开链接 实现的功能是从uart口发送数据至另一个蓝牙串口,或是从蓝牙读取数据通过uart打印出数据. int main(void) { // Initialize leds_init(); timers_init(); buttons_init(); uart_init(); ble_stack_init(); gap_params_init(); services_init(); advertising_init(); conn_params_init(); sec_param
BAT 批处理脚本 教程
第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程.了解了大概意思后,我们正式开始学习.先看一个简单的例子!@echo offecho "欢迎来到非常BAT!"pause把上面的3条命令保存为文件test.bat或者test.cmd然后执行,他就会在屏幕上显示以下二行话:欢迎来到
【转】BLE_CC2540_初学者入门指导
原文网址:http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/61462.aspx 看了下问题,发现不太会回答了,很久没弄,全忘记了,只好贴出之前的一些东西,帮助初学者入下门吧: 一.初识BLE 通过这两天对<CC2540 BLE Software Developer Guider V1.2.pdf >的学习对CC2540以及蓝牙4.0有了一个整体上的认识: 1.蓝牙4.0协议
批处理cmd背景颜色
Pause Echo 其他提示语 & pause > nul pause暂停 COLOR 设置默认的控制台前景和背景颜色. COLOR [attr] attr 指定控制台输出的颜色属性 颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为 前景.每个数字可以为以下任何值之一: 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 A = 淡绿色 3 = 湖蓝色 B = 淡浅绿色 4 = 红色 C = 淡红色 5 = 紫色 D = 淡紫色 6 = ** E
python模拟http请求2
发现了一个非常好用的第三方module:requests,模拟接口非常简单. 详细了解请移步:http://docs.python-requests.org/en/latest/ 非常不错 #!coding:utf-8 相信这句大家都懂的,不解释 #导入需要的requests import requests #定义请求头 reqheaders={'Content-type':'application/x-www-form-urlencoded', 'Accept':'text/html,
热门专题
谷歌浏览器使用v2ray
VS2019打包WPF安装程序
使用url编码后文件大小变化
duble类型数据比较大小
改变sweetalert样式 vue
c# Excel 导出 MessagePack
地理数据库要素类和shp有什么区别
vpn哪个不需要vip
逻辑回归LogisticRegression指定分类个数
.net6 docker部署
redis未授权 python
前端移动端触摸时间过短
Hibernate merge什么时候执行sql
mysql 字段与表的排序规则不一致
k8s 无服务,但是流量很高
BLHeli 固件修改
switch default位置
sql 时间加权收益率
git恢复本地未提交的文件
pycharm 绑定env