CC1310学习——点灯
CC1310點燈記錄
- 前言
- 操作
- 1.導入示例代碼
- 1.1導入步驟
- 1.2導入步驟圖示
- 2.編譯示例代碼
- 3.修改示例代碼
- 3.1修改芯片參數
- 3.1.1修改芯片型號
- 3.1.2修改映射文件
- 3.2修改原本外設對應IO
- 3.3修改硬件LED IO
前言
本篇記錄描述的是如何基于示例工程修改為空白模板,并完成點燈操作,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導入步驟圖示
導入完示例工程結構如圖
2.編譯示例代碼
編譯步驟:
-
選中示例(示例后有Active - Debug)
-
點擊小錘子進行編譯
-
在控制臺查看編譯結果
3.修改示例代碼
由于示例代碼是基于CC1310F128芯片下的開發板,所以需要修改芯片以及外設配置,需要修改的內容如下:
- targetConfigs文件下是芯片配置文件,此時點開可見為CC1310F128.ccxml,需修改
- CC1310_LAUNCHXL_NoRTOS.cmd是功能芯片內存映射文件,其中包括FALSH、RAM大小,需修改
- 原工程配置了LED等外設,IO與實際電路不同,需修改
修改前工程配置如圖
3.1修改芯片參數
3.1.1修改芯片型號
-
右鍵工程文件夾,選擇Properties
-
點擊General,芯片Core選擇CC1310F64
-
點擊應用并關閉
修改芯片型號圖示
3.1.2修改映射文件
雙擊cmd文件修改FLASH、RAM大小如下并保存
#define FLASH_BASE 0x0 #define FLASH_SIZE 0x10000 #define RAM_BASE 0x20000000 #define RAM_SIZE 0x4000
編譯一下,依舊無報錯
修改后如圖
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引腳初始化配置
回到Board_init,Board_initHook函數是外部flash初始化配置,用不上,直接注釋
編譯后報錯,雙擊報錯跳轉
發現是PWM綁定的LED被注釋了,改成未使用即可
重新編譯,無報錯
接下來進入"主函數",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翻轉電平,因此我們點燈只需要設置引腳模式,再寫電平即可,修改后“主函數”如下
但由于此處IO口不是我們需要的,因此點擊 Board_GPIO_LED0 跳轉到Board.h新增一個Board_GPIO_RUNLED或者自己按格式命名,
再繼續點擊CC1310_LAUNCHXL_GPIO_LED_RED跳轉,修改枚舉CC1310_LAUNCHXL_GPIOName,兩處修改如下圖,注意最底下的CC1310_LAUNCHXL_GPIOCOUNT不可刪除或注釋,在其他文件中有調用,用于初始化IO數量
再回到“主函數”修改參數,如下圖
編譯查看是否正常
點擊報錯進行跳轉,發現是定義的LCD等、SPI_CS、SDSPI_CS引腳被我們注釋了由于這些是普通IO,不是功能模組映射,所以不能去CC1310_LAUNCHXL.h修改宏,直接注釋相關代碼,如下圖
完成后編譯一下有報錯,發現是主函數中按鍵回調函數的IO未定義,雙擊跳轉
用不到,直接注釋再次編譯無報錯
OK,到這里原本導入的工程已經修改為通用空白模板了,但是還不是完全十分規范的空模板,比如CC1310_LAUNCHXL.h中還是定義了有一個LCD屏幕、有一個SD等等,但是不影響我們點燈操作。
3.3修改硬件LED IO
但此時燒錄肯定是不會亮燈的,原因是我們只定義IO初始化表,只聲明了有一個IO想用來控制LED,但沒配置具體是那個IO口,所以要去CC1310_LAUNCHXL.c中配置LED對應的IO口,找到gpioPinConfigs,修改如下之后編譯,點擊FLASH即可燒錄,如圖燒錄完后就可看到板子上的LED亮了。
總結
以上是生活随笔為你收集整理的CC1310学习——点灯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见的解析方式和解析器
- 下一篇: 软考中级和高级选哪个比较好?