CC1310学习——点灯

前言

本篇记录描述的是如何基于示例工程修改为空白模板,并完成点灯操作,CCS自建工程使用方法暂未摸透。

操作

大致步骤如下:
1. 导入示例代码
2. 编译示例代码
3. 修改芯片参数(型号、FLASH、RAM)
4. 修改相关多余外设配置
5. 修改实际硬件LED IO口

1.导入示例代码

1.1导入步骤

  • 点击File->import

  • 在弹出的串口中选择CCS Projects,点击Next

  • 选择示例路径

  • 选择CCS编译器版本导入

  • Finish完成导入
    示例路径在CCS安装路径下,以下路径供参考D:\CCS\simplelink_cc13x0_sdk_4_20_02_07\examples\nortos\CC1310_LAUNCHXL\drivers
    其中simplelink_cc13x0_sdk_4_20_02_07需要下载安装,具体安装方式忘记录

1.2导入步骤图示

开始导入
选择导入类型
选择导入路径及编译器类型
导入完示例工程结构如图
导入展示3

2.编译示例代码

编译步骤:

  • 选中示例(示例后有Active - Debug)

  • 点击小锤子进行编译

  • 在控制台查看编译结果

编译工程4

3.修改示例代码

由于示例代码是基于CC1310F128芯片下的开发板,所以需要修改芯片以及外设配置,需要修改的内容如下:

  • targetConfigs文件下是芯片配置文件,此时点开可见为CC1310F128.ccxml,需修改
  • CC1310_LAUNCHXL_NoRTOS.cmd是功能芯片内存映射文件,其中包括FALSH、RAM大小,需修改
  • 原工程配置了LED等外设,IO与实际电路不同,需修改

修改前工程配置如图
5修改前

3.1修改芯片参数

3.1.1修改芯片型号
  • 右键工程文件夹,选择Properties

  • 点击General,芯片Core选择CC1310F64

  • 点击应用并关闭
    修改芯片型号图示
    6打开工程属性
    7修改芯片

3.1.2修改映射文件

双击cmd文件修改FLASH、RAM大小如下并保存

#define FLASH_BASE              0x0
#define FLASH_SIZE              0x10000
#define RAM_BASE                0x20000000
#define RAM_SIZE                0x4000 

8cmd文件修改
编译一下,依旧无报错
9cmd编译
修改后如图
10修改后结构展示

3.2修改原本外设对应IO

首先打开主函数浏览一遍,发现只有Board_init、mainThread函数是可以跳转(按住Ctrl鼠标点击)并编辑的

/**  ======== main ========*/
int main(void){    
	/* Call driver init functions */    
	Board_init();    
	/* Start NoRTOS */    
	NoRTOS_start();    
	/* Call mainThread function */    
	mainThread(NULL);    
	while (1) {}
}   

Board_init函数如下

/**  ======== Board_init ========*/
void Board_init(void){    
	CC1310_LAUNCHXL_initGeneral();
}
/* 然后调用以下函数*/
/**  ======== CC1310_LAUNCHXL_initGeneral ========*/
void CC1310_LAUNCHXL_initGeneral(void){
    Power_init();    
    if (PIN_init(BoardGpioInitTable) != PIN_SUCCESS) {        
	    /* Error with PIN_init */        
	    while (1);    
    }    
    /* Perform board-specific initialization */    
    Board_initHook();
}       

其中Power_init()函数不可编辑,必须调用,BoardGpioInitTable 是引脚定义可以编辑修改,跳转如下

/**  =============================== PIN ===============================*/
#include <ti/drivers/PIN.h>
#include <ti/drivers/pin/PINCC26XX.h>
const PIN_Config BoardGpioInitTable[] = {    
	CC1310_LAUNCHXL_PIN_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL |  PIN_DRVSTR_MAX,       /* LED initially off          */    
	CC1310_LAUNCHXL_PIN_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL |  PIN_DRVSTR_MAX,       /* LED initially off          */    
	CC1310_LAUNCHXL_PIN_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES |  PIN_HYSTERESIS,          /* Button is active low       */    				    
	CC1310_LAUNCHXL_PIN_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES |  PIN_HYSTERESIS,          /* Button is active low       */
	CC1310_LAUNCHXL_SPI_FLASH_CS | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH |  PIN_PUSHPULL | PIN_DRVSTR_MIN,  /* External flash chip select */    
	CC1310_LAUNCHXL_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN,                                               /* UART RX via debugger back channel */    
	CC1310_LAUNCHXL_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL,                          /* UART TX via debugger back channel */    
	CC1310_LAUNCHXL_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN,                                             /* SPI master out - slave in */    
	CC1310_LAUNCHXL_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN,                                             /* SPI master in - slave out */    
	CC1310_LAUNCHXL_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN,                                              /* SPI clock */    
	PIN_TERMINATE
};        

按照实际需求修改LED引脚即可

  • 点击CC1310_LAUNCHXL_PIN_RLED跳转到.h下修改LED引脚
  • 根据需求注释已初始化PIN,此处只需点灯,因此全部注释
  • 按照示例新增LED引脚初始化配置

11IO配置
12IO配置表回到Board_init,Board_initHook函数是外部flash初始化配置,用不上,直接注释
13,IO初始化配置
编译后报错,双击报错跳转
14报错1
发现是PWM绑定的LED被注释了,改成未使用即可
15未使用
重新编译,无报错
16编译通过

接下来进入"主函数",CCS中真正主函数名称为mainThread(null),其中包括了GPIO初始化 ,GPIO设置等,这和之前的BoardGpioInitTable不一样,前者是IO定义以及声明,此处的GPIO_init才是正式初始化操作,但内部实现无法查看

 /* Call mainThread function */    mainThread(NULL);

mainThread示例如下:

/**  ======== mainThread ========*/
void *mainThread(void *arg0){    
    /* Call driver init functions */    
   GPIO_init();    
    /* Configure the LED and button pins */    
   GPIO_setConfig(Board_GPIO_LED0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);    
   GPIO_setConfig(Board_GPIO_LED1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);    
   GPIO_setConfig(Board_GPIO_BUTTON0, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);    
   /* Turn on user LED */    
   GPIO_write(Board_GPIO_LED0, Board_GPIO_LED_ON);    
   /* install Button callback */    
   GPIO_setCallback(Board_GPIO_BUTTON0, gpioButtonFxn0);    
   /* Enable interrupts */    
   GPIO_enableInt(Board_GPIO_BUTTON0);    
   /**  If more than one input pin is available for your device, interrupts will be enabled on Board_GPIO_BUTTON1.**/   
   if (Board_GPIO_BUTTON0 != Board_GPIO_BUTTON1) {        
   		/* Configure BUTTON1 pin */        
   		GPIO_setConfig(Board_GPIO_BUTTON1, GPIO_CFG_IN_PU |  GPIO_CFG_IN_INT_FALLING);        
   		/* Install Button callback */        
   		GPIO_setCallback(Board_GPIO_BUTTON1, gpioButtonFxn1);        
   		GPIO_enableInt(Board_GPIO_BUTTON1);    
   }    
   return (NULL);
}

该示例是配置了LED和按键,当两个按键按下其中一个时触发对应的回调函数,让分别对应的LED翻转电平,因此我们点灯只需要设置引脚模式,再写电平即可,修改后“主函数”如下
17主函数

但由于此处IO口不是我们需要的,因此点击 Board_GPIO_LED0 跳转到Board.h新增一个Board_GPIO_RUNLED或者自己按格式命名,
18
再继续点击CC1310_LAUNCHXL_GPIO_LED_RED跳转,修改枚举CC1310_LAUNCHXL_GPIOName,两处修改如下图,注意最底下的CC1310_LAUNCHXL_GPIOCOUNT不可删除或注释,在其他文件中有调用,用于初始化IO数量
19

再回到“主函数”修改参数,如下图
20
编译查看是否正常
21

点击报错进行跳转,发现是定义的LCD等、SPI_CS、SDSPI_CS引脚被我们注释了由于这些是普通IO,不是功能模组映射,所以不能去CC1310_LAUNCHXL.h修改宏,直接注释相关代码,如下图
23
25
24

完成后编译一下有报错,发现是主函数中按键回调函数的IO未定义,双击跳转
26
用不到,直接注释再次编译无报错
27
28
OK,到这里原本导入的工程已经修改为通用空白模板了,但是还不是完全十分规范的空模板,比如CC1310_LAUNCHXL.h中还是定义了有一个LCD屏幕、有一个SD等等,但是不影响我们点灯操作。

3.3修改硬件LED IO

但此时烧录肯定是不会亮灯的,原因是我们只定义IO初始化表,只声明了有一个IO想用来控制LED,但没配置具体是那个IO口,所以要去CC1310_LAUNCHXL.c中配置LED对应的IO口,找到gpioPinConfigs,修改如下之后编译,点击FLASH即可烧录,如图烧录完后就可看到板子上的LED亮了。
29
30

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值