完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
工程代码:
#include "stdarg.h" //包含需要的头文件 #define USART1_TXBUFF_SIZE 256 //定义串口3发送缓冲区大小 256字节 __align(8) char Usart3_TxBuff[USART1_TXBUFF_SIZE];//串口3缓存区 #if 1 //串口1 int fputc(int ch, FILE *s) { /* 阻塞判断串口是否发送完成 */ while((USART1->ISR & 0X40) == 0); /* 串口发送完成,将该字符发送 */ USART1->TDR = (uint8_t) ch; return ch; } #endif //串口3,AT指令发送端口,操作wifi void u3_printf(char* fmt,...) { unsigned int i,length; va_list ap; //va_list 可变参数列表,存参数地址 va_start(ap,fmt);//获取可变参数地址 fmt地址赋给ap vsprintf(Usart3_TxBuff,fmt,ap);/*使用参数列表发送格式化输出到字符串, 函数功能将可变参数格式化输出到一个字符数组 */ //fmt中内容赋给Usart3_TxBuff, va_end(ap); //清空参数列表 // length=strlen((const char*)Usart3_TxBuff); while((USART3->ISR&0X40)==0); for(i = 0;i < length;i ++) { USART3->TDR = Usart3_TxBuff; while((USART3->ISR&0X40)==0); } } 代码分析: 可变参数: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遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:25 , Processed in 0.734176 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号