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

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

[复制链接]
tanic 发布时间:2018-9-20 19:08
. I' B' x' j; @' d

% S6 X  G1 X- l2 Q' M0 g: pchar buffer[256];
: g0 k$ f7 y7 a' x2 Xint Ac_pf(char *format,...)1 ~/ s9 L: @7 i# J& c9 N! r
{
% _# x- O- x6 l* C% U& A& F& R, B va_list aptr;
# K5 k" z/ F1 g+ P2 j int ret;6 F2 ?2 i6 p2 Y) E* z
va_start(aptr,format);
; H$ _6 s: ]4 m0 s% V9 q ret = vsprintf(buffer, format, aptr);
# E$ U- m! S/ |6 F- P; C  va_end(aptr);
5 V) ]/ u9 l1 K. v) Y7 F HAL_UART_Transmit(&huart3,(uint8_t*)buffer,strlen(buffer),0xffff);$ o$ C/ c' r% Y, S# }
  return(ret);% b) g9 \9 i  E2 ]4 W5 E
}
" Q1 F. o2 k1 d: e
* v( \8 W+ l4 Y: ichar buffer1[256];
7 D4 d# J( H# G: nint Ac_pf1(char *format,...)
. v2 R6 `2 V2 K# c6 n' v$ c2 @9 `{9 O! W$ O" ^* o% q& u/ B- d
va_list aptr;
0 ^- O# ?1 l3 t9 S) ~ int ret;
' b, |4 W4 d5 h4 m0 S va_start(aptr,format);) u9 R6 Y! o  O& a7 V+ u# T2 m
ret = vsprintf(buffer1, format, aptr);
8 ?7 d, S& ]9 q: o/ B% j+ `# {! V  va_end(aptr);. L0 Z7 V( W; l; x2 d( H: {0 E
HAL_UART_Transmit(&huart2,(uint8_t*)buffer1,strlen(buffer1),0xffff);3 f! y$ s+ x; `* m! {+ I
  return(ret);
$ {2 Z/ H) Z8 w2 v$ ^( A8 y}* Q, ~8 b$ u+ _9 k# x$ g8 L
2 G, o) z+ J& v' C: i* \
int main()
' @$ V7 S3 s3 v  i& F) l{
; l3 t8 g4 v3 h! U/ j! k1 N  Ac_pf("huart3 %s","www.stmcu.org.cn");6 S* |+ z+ b- I/ J# E
Ac_pf1("huart2 %s","www.stmcu.org.cn");
* N2 }6 B% _0 L3 w& t1 {' r% I  T# }/ G
}. @. \( C; G% J+ D$ S& q3 V
没有中文解释,自己猜功能+ m) `4 G/ L" q& x# c  A/ F
赞 收藏 1 评论18 发布时间:2018-9-20 19:08

举报

18个回答
g921002 回答时间:2018-9-23 20:27:20
本帖最后由 g921002 于 2018-9-23 20:32 编辑 / Y8 |( L, a5 ~8 o) M

9 O1 g2 X9 n; t) L4 [; I6 _不用搞這樣麻煩,這樣定義,用法跟printf一模一樣。
" h7 f& G- y7 f+ @& d2 c$ y
  1. #include <string.h>
    * v' h/ J0 J( B* r; c3 {
  2. uint8_t u1txbuf[128];. ?2 l! K* s$ {2 X; V
  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:149 D* T  x5 `+ u
撸主可能是想说,所有串口都可打印东西了。而用printf 的时候,只能一个串口打印。 ...

( Q) c+ b" B( _# y你猜错了,楼主的意思很明显,不用整天重映射这个那个,直接这样用就可以printf了~

评分

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

查看全部评分

tanic 回答时间:2018-9-23 23:00:20
g921002 发表于 2018-9-23 20:27; {; V' }$ A. S
不用搞這樣麻煩,這樣定義,用法跟printf一模一樣。
: p2 s- Y( V5 b4 y) S- i, x' H1 g
不需要 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. m- }4 F6 G' p/ K$ G! D& e! N- m  }
char buffer[256]; 这个是缺点,长度不灵活

8 W6 q- M* u9 z4 M* l. m  @动态分配,最灵活。
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 手机版