你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

还在用printf吗?来试试好东西

[复制链接]
tanic 发布时间:2018-9-20 19:08
+ y6 @5 W' t, ]) s/ a
' W4 \/ l; @: O/ [4 N7 L
char buffer[256];
# @) V& c$ a4 {0 Y9 _6 Uint Ac_pf(char *format,...)
3 h) s' l- k  y& Z{
, b& `' g8 l. R va_list aptr;
+ [. d7 z% D& a6 |% X1 ~ int ret;
; F" R3 E& B- Z) t0 S va_start(aptr,format);
' \7 F" `  |% S" E* i ret = vsprintf(buffer, format, aptr);0 k+ p/ C! W) k3 c8 n
  va_end(aptr);
6 A/ m- |; ?# o" k) g1 ^, s HAL_UART_Transmit(&huart3,(uint8_t*)buffer,strlen(buffer),0xffff);
) {) [6 n" _. w6 |. l1 X: g  return(ret);
  H; j8 f+ E5 o* F) K# \& e3 e2 Y}
; ]3 a6 E- l+ J6 y
0 c0 |7 [/ |# k8 Kchar buffer1[256];9 {/ N  n, M) Y' D# I7 q3 C6 J
int Ac_pf1(char *format,...)' D" f, z0 r3 f) L
{
3 e# s. ^6 ]' Z+ @8 J! v  C va_list aptr;
. X+ n" A+ z# ]1 ` int ret;9 V3 M; p+ ^, ^( o. W! ]; C
va_start(aptr,format);7 S+ w$ M8 l7 `. ?% J! s8 M
ret = vsprintf(buffer1, format, aptr);
) ]$ e: V: L, H/ T# E  va_end(aptr);" k9 N+ w, e) k  t) f
HAL_UART_Transmit(&huart2,(uint8_t*)buffer1,strlen(buffer1),0xffff);5 Z3 p  e% r8 ~
  return(ret);
  L0 {) j( z, `: z8 m, c}
% f0 k  q+ H& O( x# I; Y) d# O3 o# h
int main()
/ P. w: ~* v5 Z0 g' F& D0 U. l{
4 h( G( D7 p" V( F4 r  Ac_pf("huart3 %s","www.stmcu.org.cn");1 R: M  {+ Q: p, t, a
Ac_pf1("huart2 %s","www.stmcu.org.cn");3 X; N5 i5 m' G$ _, y
$ X3 }4 U+ {' Q% e0 U, x
}
6 w* i8 ]  z( Q9 V* K% [+ j" x没有中文解释,自己猜功能' U. l9 L' c: b1 q  _1 c4 @
赞 收藏 1 评论18 发布时间:2018-9-20 19:08

举报

18个回答
g921002 回答时间:2018-9-23 20:27:20
本帖最后由 g921002 于 2018-9-23 20:32 编辑
( w& S3 U; T2 k$ ~5 y& ?. t4 t+ p+ ^2 e9 D. i- H% W
不用搞這樣麻煩,這樣定義,用法跟printf一模一樣。
' y% O, {! K6 h* B
  1. #include <string.h>% B: S8 }% f* z
  2. uint8_t u1txbuf[128];
    7 I3 d9 r6 V" f( s$ O
  3. #define u1msg(...) sprintf((char*)u1txbuf, __VA_ARGS__);HAL_UART_Transmit(&huart1,u1txbuf,strlen((char*)u1txbuf),100)
复制代码
Inc_brza 回答时间:2018-9-21 10:36:07
toofree 发表于 2018-9-21 09:14
2 a; Q1 C( H9 a& l# u/ S9 q% h撸主可能是想说,所有串口都可打印东西了。而用printf 的时候,只能一个串口打印。 ...

! T  m* o- \5 U7 a1 {* F. O你猜错了,楼主的意思很明显,不用整天重映射这个那个,直接这样用就可以printf了~

评分

参与人数 1ST金币 +1 收起 理由
tanic + 1 很给力!

查看全部评分

tanic 回答时间:2018-9-23 23:00:20
g921002 发表于 2018-9-23 20:27/ }1 J; n+ N  S" a# U
不用搞這樣麻煩,這樣定義,用法跟printf一模一樣。
7 e" C3 m7 B. Q! x; G, \  l
不需要 format参数  的吗
qwert00000 回答时间:2018-9-20 19:09:52
看不懂
STM1024 回答时间:2018-9-20 21:08:48
一样也是串口输出啊,不过变成了可变参数
microcraft 回答时间:2018-9-21 07:43:47
char buffer[256]; 这个是缺点,长度不灵活
七哥 回答时间:2018-9-21 09:14:58
撸主可能是想说,所有串口都可打印东西了。而用printf 的时候,只能一个串口打印。
疯de_恒 回答时间:2018-9-21 09:22:03
一样是串口,如果把缓冲做大一点,或者自动申请释放内存,利用DMA传输,那样才完美,又快又灵活。
zzwnb 回答时间:2018-9-21 09:30:08
好吧
Inc_brza 回答时间:2018-9-21 10:37:02
microcraft 发表于 2018-9-21 07:43/ x5 r0 ?- |) q2 }7 O4 `
char buffer[256]; 这个是缺点,长度不灵活

+ K7 u9 K$ X+ B% |4 |动态分配,最灵活。
tanyopoom 回答时间:2018-9-21 15:20:13
这样吗
zjczm 回答时间:2018-9-21 15:54:06
惭愧。偶连va_list也不会用,临时去学了一下。
hhhhhhhaa 回答时间:2018-9-21 17:02:06
写的是啥啊,对于小白的我实在看不懂,能加注释吗
hhhhhhhaa 回答时间:2018-9-21 17:03:26
写的是啥啊,对于小白的我实在看不懂,能加注释吗
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版