|
a0a.1 32b0c
HAL库用着是方便,可是函数中的各种assert_param真是多啊,效率就下降了。所以就用Low Layer的库了。
首先第一个程序就与hello world一样的地位 ,无疑就是GPIO了,有了GPIO就是基础。
GPIO的设置流程如下图
对就的函数调用如下。
- LED2_GPIO_CLK_ENABLE();
- LL_GPIO_SetPinMode(LED2_GPIO_PORT, LED2_PIN, LL_GPIO_MODE_OUTPUT);
- LL_GPIO_SetPinOutputType(LED2_GPIO_PORT, LED2_PIN, LL_GPIO_OUTPUT_PUSHPULL);
- LL_GPIO_SetPinSpeed(LED2_GPIO_PORT, LED2_PIN, LL_GPIO_SPEED_LOW);
- LL_GPIO_SetPinPull(LED2_GPIO_PORT, LED2_PIN, LL_GPIO_PULL_NO);
复制代码 可以看到,每个函数中带入的参数,都会有GPIO组号,与PIN号,那么每个函数都要对相同的寄存器进行设置,细说来,这样的效率也不是太高,相比直接配置寄存器来说,还是不够效率的 。
所以可以将将上面几个函数合并成一个,对于相同的参数只设置 一次就可以 了。
时行了上面的设置后,就可以使用GPIO了,当然还是对GPIO的数据寄存器进行读写了。
相对于STM32F407系列来说。
GPIO的速度设置不再是具体的速度,而是一些比较模糊的,还要对照手册来看。
- #define LL_GPIO_SPEED_LOW ((uint32_t)0x00000000) /*!< Select I/O low output speed */
- #define LL_GPIO_SPEED_MEDIUM GPIO_OSPEEDER_OSPEEDR0_0 /*!< Select I/O medium output speed */
- #define LL_GPIO_SPEED_FAST GPIO_OSPEEDER_OSPEEDR0_1 /*!< Select I/O fast output speed */
- #define LL_GPIO_SPEED_HIGH GPIO_OSPEEDER_OSPEEDR0 /*!< Select I/O high output speed */
复制代码
而不是F407中提到的
- GPIO_Speed_2MHz = 0x00, /*!< Low speed */
- GPIO_Speed_25MHz = 0x01, /*!< Medium speed */
- GPIO_Speed_50MHz = 0x02, /*!< Fast speed */
- GPIO_Speed_100MHz = 0x03 /*!< High speed on 30 pF (80 MHz Output max speed on 15 pF) */
复制代码
|
评分
-
查看全部评分
|