stm32 如何各个GPIO端口定义成数组,如:

stm32 如何各个GPIO端口定义成数组,如:,第1张

你右键追踪到定义:void

gpio_setbits(gpio_typedef*

gpiox,

uint16_t

gpio_pin),这是函数原型。所以你的变量必须遵循它的变量类型。

第一个是一个结构体指针gpio_typedef

*,不说了,去看c语言困搜中的结构体就行。之丛尺冲所以用指针是渗歼为了取得地址的值。

第二个类型是u16。

所以你的两个变量需要这样:

gpio_typedef

*gpios[12]

=

{gpiod,gpiod,gpiod,gpiod,gpioe,gpioe,gpioe,gpioe,gpiob,gpiob,gpioc,gpioc}//swr0-11

u16

port[12]=

{gpio_pin_12,gpio_pin_13,gpio_pin_14,gpio_pin_15,gpio_pin_12,gpio_pin_13,gpio_pin_14,gpio_pin_15,gpio_pin_6,gpio_pin_7,gpio_pin_6,gpio_pin_7}

使用如下:

gpiosetbit(gpios[in],port[in])

1.gpio_set_value(unsigned gpio, int value)用来设置gpio寄存器的值

2.gpio_direction_output(unsigned gpio, int value)用来设置gpio为输出功能,同时设置gpio输出的值。

一般来说,设置一个GPIO口为输出,先执行一次gpio_direction_output,然后接下来只需执行gpio_set_value就行了。

3.gpio_direction_input(unsigned gpio)用来设置gpio为输入功能

4.gpio_get_value(unsigned gpio)用来获取gpio口的输入的值

5.在使用gpio口之前,先用gpio_request(unsigned gpio, const char* label)申请gpio口的使用,若申请成功,则说明该gpio口未被使用。

6.在使用完gpio口之后,用gpio_free(unsigned gpio)释放gpio口。

7.如何获取gpio口呢,可以查看内核中对应版型的相关文件,也可以自己进行计算,比如GPIOA1的gpio为1,GPIOB2为34。

8.gpio口的通用函数接口定芹轮御义在gpiolib.c文件中,声明则在gpio.h中。

9 Linux上使用的C编译器是GNU C编译器

10

内联函数是使用inline关键字声明的函数,也成内嵌函数,它主要的作用是解决程序的运行效率。

使用内联函数的时候要注意:

1.递归函数不能定义为内联函数

2.内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。

3.内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。嫌岩

4.对内联桐耐函数不能进行异常的接口声明。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12386065.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存