今天,有点时间研究了下库,AC7811的库是在安装PACK时装进MDK的。且比较特别同STM32不一样。
比如说这个库函数:
- int32_t GPIO_SetDir(uint32_t gpioNum, uint32_t pinMode)
- {
- uint32_t tmpGPIOx = 0, tmpGPIOxPinNum = 0;
- tmpGPIOx = gpioNum / GPIO_ONE_GROUP_NUM; // Calculate GPIO Group(A~E)
- tmpGPIOxPinNum = gpioNum % GPIO_ONE_GROUP_NUM; // Calculate GPIO Group's Internal Pin Number(0~15)
- switch (tmpGPIOx)
- {
- case 0:
- GPIO_SetGPIOxMODE(GPIOA, tmpGPIOxPinNum, pinMode);
- break;
- case 1:
- GPIO_SetGPIOxMODE(GPIOB, tmpGPIOxPinNum, pinMode);
- break;
- case 2:
- GPIO_SetGPIOxMODE(GPIOC, tmpGPIOxPinNum, pinMode);
- break;
- case 3:
- GPIO_SetGPIOxMODE(GPIOD, tmpGPIOxPinNum, pinMode);
- break;
- case 4:
- GPIO_SetGPIOxMODE(GPIOE, tmpGPIOxPinNum, pinMode);
- break;
- default:
- return -1;
- }
- return 0;
- }
它是把所有的管脚都罗列在一起然后再分。我认为这是比ST的库要进步。
还有一点是,不用给管脚外设特意加时钟。比如我的点灯程序如下:
- int main(void)
- {
- InitDelay();
- InitDebug();
- GPIO_SetDir(MY_LED_PIN, GPIO_OUTPUT);//设置LED引脚为输出
- do
- {
- MY_LED = 0;
- mdelay(1000);
- MY_LED = 1;
- mdelay(1000);
-
- }while(1);
-
而管脚定义是在GPIO.h中
- #define MY_LED (GPIOC_OUT(5))//定义MY_LED引脚别名
-
- #define MY_LED_ON MY_LED =1
- #define MY_LED_OFF MY_LED =0
- #define MY_LED_TOGGLE MY_LED = !MY_LED
我只是定义了管脚是输出并没有给时钟使能,但好用:
GPIO_SetDir(MY_LED_PIN, GPIO_OUTPUT);//设置LED引脚为输出
以下是截图:
|