打印
[活动专区]

【AC7811开发板试用活动】点LED灯及库的研究

[复制链接]
420|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2019-10-26 21:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
今天,有点时间研究了下库,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引脚为输出


以下是截图:


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2399

主题

6963

帖子

68

粉丝