DSP

OMAPL138学习之新建SYSBIOS工程

2019-07-13 15:04发布


开发板是创龙OMAPL138 1、新建平台配置文件 下一步 下一步 完成。
2、新建ccs工程 下一步 完成。 3、工程配置和代码修改



修改main.c,参考光盘/demo/dsp/led代码,修改后的main.c文件
/* * ======== main.c ======== */ #include #include #include #include #include /* 头文件 */ #include "hw_types.h" // HWREG(x) #include "hw_syscfg0_OMAPL138.h" // SYSCFG0_PINMUX(x) #include "soc_OMAPL138.h" // SOC_GPIO_0_REGS #include "gpio.h" // GPIO_DIR_OUTPUT /* 函数声明 */ void GPIOBankPinInit(void);//GPIO初始化函数声明 /* * ======== taskFxn ======== */ Void taskFxn(UArg a0, UArg a1) { System_printf("enter taskFxn() "); while(1) { GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH);//D7亮,GPIO0[0] Task_sleep(100); GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW);//D7亮,GPIO0[0] Task_sleep(100); } System_printf("exit taskFxn() "); } Void taskFxn2(UArg a0, UArg a1) { System_printf("enter taskFxn() "); while(1) { GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_HIGH);//D7亮,GPIO0[0] Task_sleep(300); GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_LOW);//D7亮,GPIO0[0] Task_sleep(300); } System_printf("exit taskFxn() "); } /* * ======== main ======== */ Int main() { Task_Handle task; Error_Block eb; Task_Params taskParams; GPIOBankPinInit();//GPIO初始化 System_printf("enter main() "); Error_init(&eb); //task = Task_create(taskFxn, NULL, &eb); Task_Params_init(&taskParams); taskParams.stackSize = 512; taskParams.priority = 1; task = Task_create((Task_FuncPtr)taskFxn, &taskParams, &eb); if (task == NULL) { System_printf("Task_create() failed! "); BIOS_exit(0); } Error_init(&eb); //task = Task_create(taskFxn2, NULL, &eb); Task_Params_init(&taskParams); taskParams.stackSize = 512; taskParams.priority = 1; task = Task_create((Task_FuncPtr)taskFxn2, &taskParams, &eb); if (task == NULL) { System_printf("Task_create() failed! "); BIOS_exit(0); } BIOS_start(); /* does not return */ return(0); } /* GPIO初始化 */ void GPIOBankPinInit(void) { unsigned int PINMUX_1_VAL;//局部变量 /* 读取PINMUX1寄存器的值 */ PINMUX_1_VAL=HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)); /* 将底板4个用户led的对应管脚复用为GPIO,即GPIO0[0]、GPIO0[1]、GPIO0[2]、GPIO0[5] */ PINMUX_1_VAL=(PINMUX_1_VAL&0x000ff0ff)|0x88800800; /* 将设置后的值写回PINMUX1寄存器 */ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1))=PINMUX_1_VAL; /*配置底板4个用户led的对应管脚为输出,以下为各组 GPIO第一个管脚 的对应值(范围 1~144) * GPIO0[0] 1 ,GPIO1[0] 17 * GPIO2[0] 33 ,GPIO3[0] 49 * GPIO4[0] 65 ,GPIO5[0] 81 * GPIO6[0] 97 ,GPIO7[0] 113 * GPIO8[0] 129 */ GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT);//GPIO0[0] GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_OUTPUT);//GPIO0[1] GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_OUTPUT);//GPIO0[2] GPIODirModeSet(SOC_GPIO_0_REGS, 6, GPIO_DIR_OUTPUT);//GPIO0[5] /* 初始化底板4个用户led状态为灭 */ GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW);//D7灭,GPIO0[0] GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_LOW);//D9灭,GPIO0[1] GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_LOW);//D10灭,GPIO0[2] GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_LOW);//D6灭,GPIO0[5] }