求GPIO最快初始化的方式

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

本帖最后由 6552918 于 2019-11-16 18:54 编辑
5 `! R# J) k& d7 ^$ b/ u5 w1 t
2 t+ R: Z, d% y如何能在MCU启动后最快速的对IO进行初始化,并对输出配置高低状态,现在在main当中进行初始化还是不够快,MCU启动后还是有一段时间的状态是不想要的状态,请有方法的指导一下,谢谢!# L9 ~' Z6 d" q& t+ ^
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-11-16 18:53:58 | 显示全部楼层
在RTT中 有自动初始化,在compnents.c中,有如下定义
  1. /*
    2 e. `8 Q' r! M; K+ l" f! H9 L
  2. * Components Initialization will initialize some driver and components as following
    7 q, r4 ~; a2 K9 I
  3. * order:* c' F6 J# n; n( ?4 b7 D
  4. * rti_start         --> 02 R; p  C/ |! U! O) }
  5. * BOARD_EXPORT      --> 1! R4 l- }& l, ~, N( Y
  6. * rti_board_end     --> 1.end
    # p( h  z* ~5 G8 ]
  7. *
    % V: a! V) \( W  k
  8. * DEVICE_EXPORT     --> 2
    % c$ V5 ]( ~+ n# x) N$ B4 t! U8 N
  9. * COMPONENT_EXPORT  --> 3
    ; g- z+ S' ^  C* M5 w
  10. * FS_EXPORT         --> 40 s/ g2 ]" {6 B; p4 ^& [8 d
  11. * ENV_EXPORT        --> 5
    ( y( Q- O& p# @/ M3 @
  12. * APP_EXPORT        --> 61 o7 M( e+ l& Q) z# R2 f
  13. *$ ?; ?9 n" [& ]" b
  14. * rti_end           --> 6.end
    5 N- J8 a' I" {  }) e6 f' z
  15. *
    % V$ N' Y" u% J5 O2 D. ~
  16. * These automatically initialization, the driver or component initial function must$ q9 j: ^' M$ H3 k1 \6 f6 K* P
  17. * be defined with:
    5 g. K  @" ^/ s7 x
  18. * INIT_BOARD_EXPORT(fn);
    " g  V$ ~6 K) C( V9 ]0 i
  19. * INIT_DEVICE_EXPORT(fn);
    4 S" ?/ U* p' D2 r" |& z8 l
  20. * ...; r7 r, T$ A6 A4 n
  21. * INIT_APP_EXPORT(fn);1 k+ C2 t( i& ^% [( D# A
  22. * etc.( K1 O! v0 g  c! u9 u) n  ?0 E4 |! [- c
  23. */
复制代码
对用了自动初始化的等级,这些初始化是按照优先级初始化的,. w& d- h- W8 R" t
CPU什么时候执行初始化,以STM32为例,在drv_common.c中的  rt_components_board_init(); 来完成的。7 s2 c) e6 G5 d9 a6 b( d
这一步完成了,才会进入调度器开启main 任务。5 g, r: R' I( v9 b1 T& f! }1 b

) v  [+ O$ I" G1 s: ]  V) B. G6 W
4 |+ M: ?4 h- J
使用道具 举报 回复
发表于 2019-11-16 19:08:49 | 显示全部楼层
startup.S 里面应该是最快的方式。
使用道具 举报 回复
发表于 2019-11-16 19:10:49 | 显示全部楼层
whj467467222 发表于 2019-11-16 18:53/ [+ H6 d; R: Q3 P; e) W( L; {) G
在RTT中 有自动初始化,在compnents.c中,有如下定义对用了自动初始化的等级,这些初始化是按照优先级初始 ...

% [7 g, N2 b0 _4 C6 n是在这个位置先进行IO配置是吗?
使用道具 举报 回复
发表于 2019-11-16 20:13:16 | 显示全部楼层
6552918 发表于 2019-11-16 19:10
4 `. k  u9 q! Z* j是在这个位置先进行IO配置是吗?

' U4 P4 \! ^$ v4 t+ u 360截图18720124123949.jpg 在这里进行初始化即实现我的需求。谢谢
$ J8 P0 }2 G7 S; A) |, E4 [" R
使用道具 举报 回复
发表于 2019-11-16 22:43:36 | 显示全部楼层
aozima 发表于 2019-11-16 19:08
! e& y) U( o% @- _- P0 Pstartup.S 里面应该是最快的方式。

7 Q" q5 N! x0 Z% \2 ^$ x+ ^您这个是最快的,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

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