完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.配置usart2的串口配置,gpio,rcc enable,跟上面类似
2.勾选u*** micro lib,跟上面类似 3.添加头文件#include (1)hal库 /* USART1专用的printf函数 在usart.c中添加下列函数,还要添加申明头文件#include #include USART1_printf(“abcd”)用USART2发送字符abcd */ //hal库自定义串口printf函数 void printf2(char * fmt,…) { char buffer[100]; uint16_t i=0; va_list arg_ptr; va_start(arg_ptr,fmt); vsnprintf(buffer,100,fmt,arg_ptr); while(i<99&&buffer) { HAL_UART_Transmit(&huart1,(uint8_t *)&buffer,1,0xFFFF); i++; } va_end(arg_ptr); } (2)固件库 1、申明头文件#include 2、buffer的大小根据需要调整,相应的循环条件也要改,此处可以定义成宏,方便调节buffer大小。 3、定义va_list变量,该变量是一个字符指针,可以理解为指向当前参数的一个指针,取参必须通过这个指针进行。 4、va_start让arg_ptr指向printf函数可变参数里边的第一个参数; 5、vsnprintf()将按照fmt的格式将arg_ptr里的值依次转换成字符保存到buffer中,该函数有最大字符数限制,超过后会被截断,且该函数会自动在字符串末尾加‘ ’。 6、最后必须调用va_end(),由此确保堆栈的正确恢复。 void USART1_printf (char *fmt, …){ char buffer[USART1_REC_LEN+1]; // 数据长度 u8 i = 0; va_list arg_ptr; va_start(arg_ptr, fmt); vsnprintf(buffer, USART1_REC_LEN+1, fmt, arg_ptr); while ((i < USART1_REC_LEN) && (i < strlen(buffer))){ USART_SendData(USART1, (u8) buffer[i++]); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); } va_end(arg_ptr); } 代码分析: 可变参数:c语言可变参数输出 va_list ap; //va_list 可变参数列表,存参数地址 va_start(ap,fmt);//获取可变参数地址 fmt地址赋给ap vsprintf(Usart3_TxBuff,fmt,ap);/*使用参数列表发送格式化输出到字符串, 函数功能将可变参数格式化输出到一个字符数组 */ //fmt中内容赋给Usart3_TxBuff, va_end(ap); //清空参数列表 把可变参数地址存到ap中,存储图如下。 函数形式参数存储: void func(char * parameter0,char * parameter1,char * parameter2,char * parameter3){ } 栈向下生长,先入后出 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1792 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1626 浏览 1 评论
1094 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
732 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1682 浏览 2 评论
1943浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
740浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
577浏览 3评论
600浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
562浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 09:10 , Processed in 1.019332 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号