Ngày 2: GPIO output
Đừng bắt đầu với CCS với empty project và cấu hình từ con số 0 vì bạn sẽ bỏ cuộc ngay từ trước khi cấu hình xong. Thay vào đó, hãy tận dụng các ví dụ mẫu của CCS và ghi đè code của mình lên.
Bước 0: Tạo workspace, đơn giản là để lưu trữ các Prereferences của CCS
Bước 1: Ở cửa sổ Getting Started chọn Resource Explorer hoặc vào View -> Resource Explorer

Bước 2: Chọn Sotfware -> SimpleLink CC13XX CC26XX SDK -> Examples
Bước 3: Chọn board: Ở đây mình chọn CC1312R7
Bước 4: Chọn TI drivers -> Empty: Chọn Empty để lấy sườn project với các thiết lập RTOS sẵn, ở đây sẽ có 1 task trống và ta sẽ viết dạng RTOS trên task trống này
Bước 5: Chọn TI-RTOS (CCS) và Import (Chọn TI Clang Compiler)
Bước 6: Cấu hình SysConfig: Kiểm tra chân nào trên board nối với led. Trên thanh Project Explorer bên trái, tìm empty.syscfg. Double click để mở. Giao diện Sysconfig hiện ra như hình

Bước 7: Ở cột trái cửa số sysconfig, tìm tag GPIO

Bước 8: Ở bước này, ta có thể đặt tên cho GPIO, ở đây mình tạm đặt là LED_RED. Hãy cấu hình như sau: Mode output, Initial Output state chọn Low. Tương tự cấu hình LED_GREEN. Lưu ý phần use hardware, hãy chọn LaunchPad LED Green và Red tương ứng, khi đó phần mềm sẽ tự map phần cứng vào chân mà không sợ sai sót. Bấm CTRL + S để lưu config lại.
Bước 9: Viết code C, tại file empty.c, ta có thể viết code C trên file này. Cấu hình của TI driver thông thường sẽ bao gồm Init, Open, Use và Close. Giao diện của empty.c lúc này đã có sẵn GPIO_Init()
/* For usleep() */
#include <unistd.h>
#include <stdint.h>
#include <stddef.h>
/* Driver Header files */
#include <ti/drivers/GPIO.h>
// #include <ti/drivers/I2C.h>
// #include <ti/drivers/SPI.h>
// #include <ti/drivers/Watchdog.h>
/* Driver configuration */
#include "ti_drivers_config.h"
/*
* ======== mainThread ========
*/
void *mainThread(void *arg0)
{
/* 1 second delay */
uint32_t time = 1;
/* Call driver init functions */
GPIO_init();
// I2C_init();
// SPI_init();
// Watchdog_init();
/* Configure the LED pin */
GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
/* Turn on user LED */
GPIO_write(CONFIG_GPIO_LED_0, CONFIG_GPIO_LED_ON);
while (1)
{
sleep(time);
GPIO_toggle(CONFIG_GPIO_LED_0);
}
}
Bước 10: Viết code nháy led theo yêu cầu sau. 2 Led RED và GREEN chớp tắt xen kẽ chu kì 1s (RED sáng, GREEN tắt và ngược lại). Ta chỉ cần thiết lập ở Syscofig Initial State Output của 2 LED ngược nhau, sau đó gọi hàm toggle là được. Bên dưới là đoạn code mẫu.
* For usleep() */
#include <unistd.h>
#include <stdint.h>
#include <stddef.h>
/* Driver Header files */
#include <ti/drivers/GPIO.h>
// #include <ti/drivers/I2C.h>
// #include <ti/drivers/SPI.h>
// #include <ti/drivers/Watchdog.h>
/* Driver configuration */
#include "ti_drivers_config.h"
/*
* ======== mainThread ========
*/
void *mainThread(void *arg0)
{
/* 1 second delay */
uint32_t time = 1;
/* Call driver init functions */
GPIO_init();
// I2C_init();
// SPI_init();
// Watchdog_init();
/* Configure the LED pin */
//GPIO_write(LED_RED, 1);
//GPIO_write(LED_GREEN, 0);
/* Turn on user LED */
while (1)
{
GPIO_toggle(LED_RED);
GPIO_toggle(LED_GREEN);
usleep(500000);
}
Giải thích code:
GPIO_init(); Hàm này khai báo sử dụng chức năng GPIO, tương tự void setup và define chân trong Arduino
GPIO_toggle(LED_RED); Hàm này sẽ đảo trạng thái chân được gán vào hàm.
usleep(500000); Dừng chương trình trong 500000 micro s, tương tự delay trong Arduino
Homework (optional): Nháy led ngoài kit theo chu kì 2s , sử dụng thêm điện trở phù hợp.