CC3220学习笔记---点亮LED ROM API版

news/2024/11/30 15:31:41/
上篇文章,花了很大的力气用直接访问内存的方式实现了跑马灯。那么在 CC3220学习笔记---ROM Services 这篇文章中,我们得知,TI公司为CC3220实现了一个外设驱动库 driverlib API,专门用于此MUC的使用。此驱动库可在RAM中调用,也可在ROM中直接调用。那么今天我们就用驱动库的这两种调用方式直接实现跑马灯。

使用上篇文章创建工程的方式无法访问驱动库,搞半天也不得法。最后没办法,只能在现有工程基础上写程序了。这些细节以后有机会再弄清楚吧。

一、导入example项目【timerled】
在菜单中单击【Project】-->【Import CCS Projects】,单击【Browse】按钮,选择【C:\ti\simplelink_cc32xx_sdk_1_30_01_03\examples\rtos\CC3220SF_LAUNCHXL\drivers\timerled\tirtos\ccs】文件夹,然后单击【finish】按钮将timeled项目导入Project Explorer。

在Project Exploer中的【timerled】项目上点右键,选择【Copy】菜单,然后在Project Exploer空白处右键选择【Paste】菜单,在弹出的窗口中,填入新项目的名称“demo_gpio_lib”。点确定后,生成一个新的项目。

展开拷贝过来的项目,删!删!删!,最后剩下如下图所示文件:


打开【main_tirtos.c】文件,删除里面的代码,然后拷贝如下代码:

#include <ti/devices/cc32xx/inc/hw_memmap.h>
#include <ti/devices/cc32xx/inc/hw_types.h>#include <ti/devices/cc32xx/driverlib/gpio.h>
#include <ti/devices/cc32xx/driverlib/pin.h>
#include <ti/devices/cc32xx/driverlib/prcm.h>void delay(int temp)
{int i = 0;for (i = 0; i < temp; i++);
}int main(void)
{//开启GPIOA1时钟PRCMPeripheralClkEnable(PRCM_GPIOA1, PRCM_RUN_MODE_CLK);//设置3个LED引脚为输出方向GPIODirModeSet(GPIOA1_BASE, 0x0E, GPIO_DIR_MODE_OUT);//配置3个LED引脚为GPIO,电流强度为2mAPinTypeGPIO(PIN_64, PIN_MODE_0, false);PinTypeGPIO(PIN_01, PIN_MODE_0, false);PinTypeGPIO(PIN_02, PIN_MODE_0, false);int flag = 2;while(1){//写GPIOGPIOPinWrite(GPIOA1_BASE, 0x0E, flag);flag = (flag == 8) ? 2 : flag << 1;delay(0xfffff);}
}

编译,运行,跑马灯实现。这次时间调快了些。代码我就不细讲了,和寄存器版基本一样,只是拿库函数替代了寄存器的直接访问,这些函数也就是实现访问寄存器的功能。这个版本的代码访问的是RAM内的库函数。

下面来实现访问ROM内库函数版本的跑马灯,其实很简单,首先包含以下头文件:
#include <ti/devices/cc32xx/driverlib/rom.h>
#include <ti/devices/cc32xx/driverlib/rom_map.h>
然后给库函数加上“MAP_”前缀。
最终代码如下:
#include <ti/devices/cc32xx/inc/hw_memmap.h>
#include <ti/devices/cc32xx/inc/hw_types.h>
//这两行为新添加的头文件
#include <ti/devices/cc32xx/driverlib/rom.h>
#include <ti/devices/cc32xx/driverlib/rom_map.h>#include <ti/devices/cc32xx/driverlib/gpio.h>
#include <ti/devices/cc32xx/driverlib/pin.h>
#include <ti/devices/cc32xx/driverlib/prcm.h>void delay(int temp)
{int i = 0;for (i = 0; i < temp; i++);
}int main(void)
{//开启GPIOA1时钟MAP_PRCMPeripheralClkEnable(PRCM_GPIOA1, PRCM_RUN_MODE_CLK);//设置3个LED引脚为输出方向MAP_GPIODirModeSet(GPIOA1_BASE, 0x0E, GPIO_DIR_MODE_OUT);//配置3个LED引脚为GPIO,电流强度为2mAMAP_PinTypeGPIO(PIN_64, PIN_MODE_0, false);MAP_PinTypeGPIO(PIN_01, PIN_MODE_0, false);MAP_PinTypeGPIO(PIN_02, PIN_MODE_0, false);int flag = 2;while(1){//*((volatile unsigned long *)(0x40005000 + 0x038)) = flag;MAP_GPIOPinWrite(GPIOA1_BASE, 0x0E, flag);flag = (flag == 8) ? 2 : flag << 1;delay(0xfffff);}
}
编译,运行。实现同样的功能。


http://www.ppmy.cn/news/140951.html

相关文章

CC3220学习笔记---UART的使用(翻译)

关于UART的使用方法&#xff0c;TI有详细文档说明。请参考驱动安装目录下的DOC文件夹&#xff0c;此文进行翻译。 详细描述 UART驱动接口 使用UART驱动&#xff0c;确保设备链接至适当的驱动库并包含以下头文件&#xff1a; #include <ti/drivers/UART.h> 此模块用于应用…

NetAPP FAS3220存储硬盘更换操作步骤

NetAPP FAS3220存储硬盘更换操作步骤 1、问题描述 NetAPP存储更换新硬盘后&#xff0c;硬盘一般会自动识别加入原有系统中&#xff0c;但是有时候新插入的硬盘可能无法自动分配&#xff0c;状态显示为“Not Owned”&#xff0c;则需要通过ssh登录对应设备进行手动分配。 2、 …

CC3220LaunchPad学习(一)

CC3220LaunchPad开发板使用 Created for the Internet of Things (IoT), the SimpleLink Wi-Fi CC3220 device is a single-chip microcontroller (MCU) with built-in Wi-Fi connectivity for the LaunchPad ecosystem, that integrates a highperformance ARM Cortex-M4 MCU…

python connect PAC3220 through modbus tcp protocal

python 直接读取PAC3220 通过modbus tcp 协议。 硬件连接&#xff1a;网线连接PC and PAC3220. 协议简介&#xff1a; Modbus协议是一项应用层报文传输协议&#xff0c;包括ASCII、RTU、TCP三种报文类型。 标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口&am…

CC3220学习笔记---点亮LED寄存器版

CC3220SF开发板到货&#xff0c;拍照留念 两兄弟&#xff0c;右边这块是CC3220SF&#xff0c;大一些。 相比51单片机&#xff0c;ARM的MCU复杂得多&#xff0c;再加上N层的抽象&#xff0c;复杂度更是高得多。更可怕的是&#xff0c;所有文档还是英文的&#xff0c;这东西看中文…

CC3220学习笔记---中断

我们还是先把所有中断相关寄存器列出来吧。与中断有关的寄存器一共7个&#xff0c;结构都差不多&#xff0c;下面一一讲解&#xff1a; 一、中断寄存器 GPIOIS Register (offset 404h) [reset 0h] 此寄存器指示中断检测方式&#xff0c;为0时表示边沿触发&#xff0c;为1时表…

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

上节课使用了driverlib API来实现了LED灯的点亮&#xff0c;在实际开发中&#xff0c;不可能这样写程序&#xff0c;效率太低。这时就需要把硬件的各种行为抽象出来&#xff0c;帮助开发人员更容易地&#xff0c;更符合人类思维的方式进行操作。 首先理解CC3220 SDK源码的架构&…

CC3220开发板

思前考后&#xff0c;还是得从底层学起&#xff0c;弄清楚芯片。先要在TI-RTOS下搞清楚&#xff0c;再转到Zephyr。问题是TI-RTOS不支持CC3200&#xff0c;仅FreeRTOS支持它。TI-RTOS已经弄过一段&#xff0c;还算有点熟&#xff0c;再花时间学FreeRTOS感觉不太值得。所以还是搞…