参考以下成功进行移植后 C代码如下:
[【TI C2000】F28002x移植SYS/BIOS并运行TI-RTOS及工程模板](blog.csdn.net/.../145650628)
/*
* ======== main.c ========
*/
/* BIOS/XDC Include Files. */
#include <xdc/std.h>
#include <xdc/cfg/global.h>
#include <xdc/runtime/IHeap.h>
#include <xdc/runtime/System.h>
#include <xdc/runtime/Error.h>
#include <xdc/runtime/Memory.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Event.h>
#include <ti/sysbios/knl/Semaphore.h>
#include <ti/sysbios/knl/Clock.h>
#include <ti/sysbios/heaps/HeapBuf.h>
#include <ti/sysbios/heaps/HeapMem.h>
#include <ti/sysbios/knl/Event.h>
#include <ti/sysbios/family/c28/Hwi.h>
#include "device.h"
#include "driverlib.h"
#include <stdint.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
//
// Globals
//
//
// Send data for SCI-A
//
uint16_t TX_Buf[2]={0xAA,0xBB};
//
// Received data for SCI-A
//
uint16_t RX_Buf[2]={0xFF,0xFF};
//
// Function Prototypes
//
void Init_GPIO(void)
{
//
// GPIO28 is the SCI Rx pin.
//
GPIO_setPinConfig(DEVICE_GPIO_CFG_SCIRXDA);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_DIR_MODE_IN);
GPIO_setPadConfig(DEVICE_GPIO_PIN_SCIRXDA, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_QUAL_ASYNC);
//
// GPIO29 is the SCI Tx pin.
//
GPIO_setPinConfig(DEVICE_GPIO_CFG_SCITXDA);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(DEVICE_GPIO_PIN_SCITXDA, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_QUAL_ASYNC);
//GPIO 31 34 Output
GPIO_setPinConfig(GPIO_31_GPIO31);
GPIO_setDirectionMode(31, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(31, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(31, GPIO_QUAL_ASYNC);
GPIO_setPinConfig(GPIO_34_GPIO34);
GPIO_setDirectionMode(34, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(34, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(34, GPIO_QUAL_ASYNC);
GPIO_writePin(31,0);
GPIO_writePin(34,1);
}
void Init_SCI(void)
{
SCI_setConfig(SCIA_BASE, DEVICE_LSPCLK_FREQ, 115200, (SCI_CONFIG_WLEN_8 |
SCI_CONFIG_STOP_ONE |
SCI_CONFIG_PAR_NONE));
SCI_enableModule(SCIA_BASE);
SCI_enableTxModule(SCIA_BASE);
SCI_enableRxModule(SCIA_BASE);
SCI_resetChannels(SCIA_BASE);
SCI_performSoftwareReset(SCIA_BASE);
}
void delay_ms(uint32_t ms)
{
while(ms--)
{
DEVICE_DELAY_US(1000);
}
}
/*
* ======== taskFxn ========
*/
void taskFxn(UArg a0, UArg a1)
{
Init_GPIO();
Init_SCI();
SCI_writeCharArray(SCIA_BASE, TX_Buf, 2);
while (1)
{
GPIO_togglePin(31);
GPIO_togglePin(34);
// SCI_readCharArray(SCIA_BASE, RX_Buf, 1);
SCI_writeCharArray(SCIA_BASE, RX_Buf, 1);
}
}
int main(void)
{
Task_Params taskParams;
System_printf("enter main()\n");
//
// Initializes system control, device clock, and peripherals
//
Device_init();
Device_initGPIO();
//
// Initializes PIE and clear PIE registers. Disables CPU interrupts.
// and clear all CPU interrupt flags.
//
Interrupt_initModule();
//
// Initialize the PIE vector table with pointers to the shell interrupt
// Service Routines (ISR).
//
Interrupt_initVectorTable();
//
// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
//
EINT;
ERTM;
Task_Params_init(&taskParams);
taskParams.priority = 3;
Task_create(taskFxn, &taskParams, NULL);
BIOS_start(); /* does not return */
return(0);
}
调试时 发现System_printf不能输出
且Task的循环在运行十次后就自动卡死
是否有什么配置没完成的?有无官方移植成功的示例工程参考?