TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2642R: 关于GPIO初始化问题

Part Number:CC2642R

您好!

有个疑惑,为什么GPIO会初始化两次?

在程序启动的地方,进行过GPIO初始化,初始化的Table可以在 .syscfg文件中修改。

但是实际用GPIO的地方,会对它再次初始化

另外实际测试发现,有的GPIO不在 Board_initGeneral()函数列表里,也可以模仿 Board_initKeys() 的方法进行调用。

那么这个 Board_initGeneral()-> pin_init() 这个函数的意义在哪,不需要前置初始化,后续初始化也可以使用。

zhihao chen:

也就是不在这个table里面的引脚,也可以正常在外部初始化和使用,那么这个PIN_init函数有啥意义?

,

YiKai Chen:

Board_initGeneral會先調用PIN_init函数 (Must be called early in the boot sequence to ensure that I/O pins have safeconfigurations.),後續要再設置IO可以透過PIN_open在應用程序去新增或是修改,PIN_open是可以多次調用的

,

Kevin Qiu1:

我同意YiKai的说法,PIN_open是可以被多次调用的,另外你可以debug单步运行查看具体的程序调用

,

zhihao chen:

感谢回答,但是仍然有个疑问,如果 PIN open 可以直接增加和修改,那么 PIN_init 意义在哪,是不是可以随便在 PIN_init 添加一个GPIO,其他GPIO都在 PIN_open里做即可?

以前写过STM32编程,GPIO只初始化一次,因此有疑问,感谢!

,

YiKai Chen:

你可以去研究一下\source\ti\drivers\pin下PINCC26XX.c中PIN_init/PIN_open的源碼就可以知道差異,基本上就是有些動作只需要做一次,就在PIN_init做,之後如果只是要改腳位設置,就可以用PIN_open

,

zhihao chen:

明白,我研究过,正想和您确认,就是说,这个PIN_init其实是对所有GPIO的一个初始化配置,并不是针对某个pin脚。Table里面添加的其实是额外的pin脚初始化,其实不做也可以通过PIn_open来实现,我这样理解对吗?

,

zhihao chen:

Pin_open 和 Pin_int 对应的 Table 其实是不一样的函数,但是配置的内容是一样的

,

zhihao chen:

我现在做过一个测试,只配置一个GPIO,后续所有要用到的,都用Pin_open来实现,目前没有遇到Bug

,

YiKai Chen:

对的

赞(0)
未经允许不得转载:TI中文支持网 » CC2642R: 关于GPIO初始化问题
分享到: 更多 (0)