CC3220学习笔记---点亮LED ROM API版
来源:互联网 发布:手机bobble是什么软件 编辑:程序博客网 时间:2024/05/13 11:24
上篇文章,花了很大的力气用直接访问内存的方式实现了跑马灯。那么在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,电流强度为2mA PinTypeGPIO(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) { //写GPIO GPIOPinWrite(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,电流强度为2mA MAP_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); }}编译,运行。实现同样的功能。
0 0
- CC3220学习笔记---点亮LED ROM API版
- CC3220学习笔记---点亮LED寄存器版
- CC3220学习笔记---点亮LED PinMux版
- CC3220学习笔记---中断
- ble学习笔记二-----------------点亮led
- STM32学习笔记1-点亮LED
- STM32学习笔记之点亮LED灯
- stm32学习笔记(一)点亮LED
- CC3220学习笔记---UART(翻译)
- Linux驱动程序学习笔记(3)——点亮LED
- CC2530学习笔记のGPIO配置——点亮LED
- 嵌入式学习笔记002-裸奔篇之点亮led
- stm32学习笔记:新建工程流程,点亮led灯
- uboot学习笔记(1.2点亮LED灯)
- STM32学习笔记1:点亮第一盏LED灯
- STM32学习之点亮LED
- CC3220学习笔记---UART的使用(翻译)
- [笔记]:Tiny6410裸机点亮led灯
- 给报考软件工程专业的高三学生的一些建议
- Bootstrap之栅格系统
- javascript内置对象及方法
- 新电脑 新日志
- 高效MySQL读书总结篇(一)
- CC3220学习笔记---点亮LED ROM API版
- 【并发编程】并发编程的模型
- java SE 学习笔记(一)
- C#——面对对象基础
- C#中struct和class的区别
- 第五次实验
- Linux shell 脚本攻略学习笔记5
- POJ 1045 Bode Plot 笔记
- 网络编程