求GPIO最快初始化的方式

发表在 GPIO2019-11-16 18:48 [复制链接] 7 117

本帖最后由 6552918 于 2019-11-16 18:54 编辑 2 V- g8 S! A% n) d8 X: b
& C$ T# ?) i  x6 P  o3 ?
如何能在MCU启动后最快速的对IO进行初始化,并对输出配置高低状态,现在在main当中进行初始化还是不够快,MCU启动后还是有一段时间的状态是不想要的状态,请有方法的指导一下,谢谢!
# Y$ E  P$ H; w  E$ {1 d0 H
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-11-16 18:53:58 | 显示全部楼层
在RTT中 有自动初始化,在compnents.c中,有如下定义
  1. /*4 M: J: o# }+ K" v4 S- I2 }9 O; q
  2. * Components Initialization will initialize some driver and components as following
    9 @, t) Z; E' A( \
  3. * order:
    : X5 U& O+ J, x, a0 S$ G
  4. * rti_start         --> 0
    ; W' C; N9 V+ b& U# H8 G
  5. * BOARD_EXPORT      --> 1( t1 w" q9 [3 J
  6. * rti_board_end     --> 1.end
      V$ Q7 v5 Q" u
  7. *
    " M5 }, Z7 D5 x" p* D* H
  8. * DEVICE_EXPORT     --> 2  z. e, u( v3 i
  9. * COMPONENT_EXPORT  --> 3
      p- ]; _  {) e
  10. * FS_EXPORT         --> 46 M4 q* {# o! i7 m: q9 e
  11. * ENV_EXPORT        --> 58 e. P( `( a% g6 [# h
  12. * APP_EXPORT        --> 6- T! O+ O  d0 r* U# r
  13. *4 f8 F/ p, t7 M  |% \2 ^
  14. * rti_end           --> 6.end
    9 \6 i) B. p1 ^/ t
  15. *
    - [; @) R! K' _9 Y
  16. * These automatically initialization, the driver or component initial function must2 }* |/ a% `6 A2 L
  17. * be defined with:
    7 F/ ~$ h  f0 E9 R+ |
  18. * INIT_BOARD_EXPORT(fn);
    : Y7 C6 X' g$ K2 U- j
  19. * INIT_DEVICE_EXPORT(fn);
    * u+ L( T/ a; j2 `
  20. * ...
    ) i& l5 p& o, K9 D7 h; M. ]2 N
  21. * INIT_APP_EXPORT(fn);6 X0 d6 P! f9 @, _: S
  22. * etc.
    # v& Q; \+ }+ ^5 Y
  23. */
复制代码
对用了自动初始化的等级,这些初始化是按照优先级初始化的,
4 d' D& P, W: |/ J' iCPU什么时候执行初始化,以STM32为例,在drv_common.c中的  rt_components_board_init(); 来完成的。
) a% ?! J# w# |, M" ?这一步完成了,才会进入调度器开启main 任务。" j/ _; v% {9 I

& f2 B7 \9 l& g# Y+ }; L/ h) ^; S, C$ B8 i# j3 E( W$ i
使用道具 举报 回复
发表于 2019-11-16 19:08:49 | 显示全部楼层
startup.S 里面应该是最快的方式。
使用道具 举报 回复
发表于 2019-11-16 19:10:49 | 显示全部楼层
whj467467222 发表于 2019-11-16 18:53
. I' A) X* Y9 }7 a% n在RTT中 有自动初始化,在compnents.c中,有如下定义对用了自动初始化的等级,这些初始化是按照优先级初始 ...
* Y4 |$ t, `! U  a
是在这个位置先进行IO配置是吗?
使用道具 举报 回复
发表于 2019-11-16 20:13:16 | 显示全部楼层
6552918 发表于 2019-11-16 19:105 D/ F- b5 n0 V
是在这个位置先进行IO配置是吗?

6 {* X  Z! ~, W! l/ u, } 360截图18720124123949.jpg 在这里进行初始化即实现我的需求。谢谢
; K% p. G# a! v9 E/ J7 e& t/ s, Q
使用道具 举报 回复
发表于 2019-11-16 22:43:36 | 显示全部楼层
aozima 发表于 2019-11-16 19:08
% n8 t$ x7 a8 u- Sstartup.S 里面应该是最快的方式。

; a$ k' Z. r1 ~! }6 K1 r您这个是最快的,sub$main 对GPIO进行初始化是最快的。
使用道具 举报 回复
发表于 2019-11-17 08:26:00 | 显示全部楼层
补充下,如果还是觉得不够快,上电时有误动作,可以通过上拉或下拉电阻来稳定状态。
使用道具 举报 回复
发表于 2019-11-18 18:18:45 | 显示全部楼层
stm32 多数引脚上电默认普通GPIO复用,不需要初始化,可以直接操控IO高低电平。
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表