CC3220学习笔记---点亮LED PinMux版

这篇博客深入探讨了CC3220 SDK的架构,包括devices、drivers和boards三个目录的角色。devices层提供硬件级别的驱动,drivers层将底层API封装成易于使用的MCU功能,而boards层则根据特定开发板的需求进行进一步抽象。通过GPIO_PinConfig、GPIO_CallbackFxn和GPIOCC32XX_Config等,详细解释了如何配置PinMux以实现LED的点亮。
摘要由CSDN通过智能技术生成
上节课使用了driverlib API来实现了LED灯的点亮,在实际开发中,不可能这样写程序,效率太低。这时就需要把硬件的各种行为抽象出来,帮助开发人员更容易地,更符合人类思维的方式进行操作。

首先理解CC3220 SDK源码的架构,下面是目录结构:


一共这五个文件夹,展开后:


  • 【devices】目录下的是最底层驱动,它直接跟硬件打交道。ROM内存放的API就是这一块,上篇日志我们使用的就是这里的函数。
  • 【drivers】目录则是在最底层API的基础上进行包装,抽象出MCU的各种行为,方便开发人员使用。这里打个比方吧。比如接电话这个行为可分解为如下步骤:电话铃响-->接通电话-->通话-->挂电话。电话铃响、接通电话、通话、挂电话这些单独的动作组合在一起才成为“接电话”这个行为。drivers层的作用就是把devices层的单独动作组合成具体行为,供开发者使用。
  • 【boards】从文件命名来看drivers层针对的是CC32XX系列的MCU,应该就是现有的CC3220、CC3220S、CC3220SF三款。三款功能绝大部分相同,只有少数差异,那么drivers层包含的仅为这几款MCU的相同部分的功能。另外,我们知道,大部分引脚是可以复用的。每个人拿到相同的芯片做的事情不一样,从而设计的开发板并不相同,甚至天差地别。所以这时就需要boards这一层,专门针对特定的开发板,在drivers层的基础上做进一步抽象,以方便开发人员使用。所以这一层文件的命名都以开发板为前缀,它也仅针对特定开发板使用。

今天,我们使用【drivers】层库函数来实现LED灯点亮。首先得分析GPIO相关部分源码。

一、GPIO_PinConfig
首先打开【drivers】根目录下的【GPIO.h】文件,首先找到这个声明:
/*!
 *  @brief  GPIO pin configuration settings
 *
 *  The upper 16 bits of the 32 bit PinConfig is reserved
 *  for pin configuration settings.
 *
 *  The lower 16 bits are reserved for device-specific
 *  port/pin identifications
 */
typedef uint32_t GPIO_PinConfig;
一个引脚的名称、分组、GPIO配置信息都被包含在了这个32位整数GPIO_PinConfig里面了。它的高16位用于存放GPIO配置信息,而低16位用于存放引脚标识。下面分别讲解:

1、引脚标识
打开 【drivers】-->【gpio】下的GPIOCC32XX.h文件,找到下述代码:
//引脚为空
#define GPIOCC32XX_EMPTY_PIN 0x0000 
//GPIO A0 port下的8个引脚
#define GPIOCC32XX_GPIO_00 0x000
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值