TI ROTS BIOS设置semaphore函数错误

问题描述

运行下面的代码时,我总是收到错误消息。 这应该是示例代码,所以我不确定为什么此代码会出现此错误

它与semaphore()有关,但老实说,我不知道此错误来自何处。 有人可以帮我吗?

Error image

BIOS/SYS setting 1

BIOS/SYS setting 2

BIOS/SYS setting 3

描述资源路径位置类型 #10010链接期间遇到错误;未建立“ blink_target_HWI.out” blink_target_HWI C / C ++问题

描述资源路径位置类型 #10234-D仍存在未解析的符号blink_target_HWI C / C ++问题

描述资源路径位置类型 gmake:*** [全部]错误2 blink_target_HWI C / C ++问题

描述资源路径位置类型 gmake @L_404_4@:*** [blink_target_HWI.out]错误1 blink_target_HWI C / C ++问题

描述资源路径位置类型 未解析的符号信号量,首先在./main.obj blink_target_HWI C / C ++问题中引用

//---------------------------------------------------------------------------------
// Project: Blink TM4C BIOS Using Hwi (STARTER)
// Author: Eric Wilbur
// Date: June 2014
//
// Note: The function call TimerIntClear(TIMER2_BASE,TIMER_TIMA_TIMEOUT) HAS
//       to be in the ISR. This fxn clears the TIMER's interrupt flag coming
//       from the peripheral - it does NOT clear the cpu interrupt flag - that
//       is done by hardware. The author struggled figuring this part out - hence
//       the note. And,in the Swi lab,this fxn must be placed in the
//       Timer_ISR fxn because it will be the new ISR.
//
// Follow these steps to create this project in CCSv6.0:
// 1. Project -> New CCS Project
// 2. Select Template:
//    - TI-RTOS for Tiva-C -> Driver Examples -> EK-TM4C123 LP -> Example Projects ->
//      Empty Project
//    - Empty Project contains full instrumentation (UIA,RTOS Analyzer) and
//      paths set up for the TI-RTOS version of MSP430Ware
// 3. Delete the following files:
//    - Board.h,empty.c,EK_TM4C123GXL.c/h,empty_readme.txt
// 4. Add main.c from TI-RTOS Workshop Solution file for this lab
// 5. Edit empty.cfg as needed (to add/subtract) BIOS services,delete given Task
// 6. Build,load,run...
//----------------------------------------------------------------------------------


//----------------------------------------
// BIOS header files
//----------------------------------------
#include <xdc/std.h>                        //mandatory - have to include first,for BIOS types
#include <ti/sysbios/BIOS.h>                //mandatory - if you call APIs like BIOS_start()
#include <xdc/runtime/Log.h>                //needed for any Log_info() call
#include <xdc/cfg/global.h>                 //header file for statically defined objects/handles


//------------------------------------------
// TivaWare Header Files
//------------------------------------------
#include <stdint.h>
#include <stdbool.h>

#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "inc/hw_ints.h"
#include "driverlib/interrupt.h"
#include "driverlib/timer.h"


//----------------------------------------
// Prototypes
//----------------------------------------
void hardware_init(void);
void ledToggle(void);
void delay(void);
void blink_target_swi(void);

//---------------------------------------
// Globals
//---------------------------------------
volatile int16_t i16ToggleCount = 0;


//---------------------------------------------------------------------------
// main()
//---------------------------------------------------------------------------
void main(void)
{

   hardware_init();                         // init hardware via Xware
   BIOS_start();

}


//---------------------------------------------------------------------------
// hardware_init()
//
// inits GPIO pins for toggling the LED
//---------------------------------------------------------------------------
void hardware_init(void)
{
    uint32_t ui32Period;

    //Set cpu Clock to 40MHz. 400MHz PLL/2 = 200 DIV 5 = 40MHz
    SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

    // ADD Tiva-C GPIO setup - enables port,sets pins 1-3 (RGB) pins for output
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

    // Turn on the LED
    GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,4);

    // Timer 2 setup code
    SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2);           // enable Timer 2 periph clks
    TimerConfigure(TIMER2_BASE,TIMER_CFG_PERIODIC);        // cfg Timer 2 mode - periodic

    ui32Period = (SysCtlClockGet() /2);                     // period = cpu clk div 2 (500ms)
    TimerLoadSet(TIMER2_BASE,TIMER_A,ui32Period);         // set Timer 2 period

    TimerIntEnable(TIMER2_BASE,TIMER_TIMA_TIMEOUT);        // enables Timer 2 to interrupt cpu

    TimerEnable(TIMER2_BASE,TIMER_A);                      // enable Timer 2

}


//---------------------------------------------------------------------------
// ledToggle()
//
// toggles LED on Tiva-C LaunchPad
//---------------------------------------------------------------------------
void ledToggle(void)
{
    //TimerIntClear(TIMER2_BASE,TIMER_TIMA_TIMEOUT);

    // LED values - 2=RED,4=BLUE,8=GREEN
    while(1){

    Semaphore_pend(semaphore(),BIOS_WAIT_FOREVER);
    if(GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_2))
    {
        GPIOPinWrite(GPIO_PORTF_BASE,0);
    }
    else
    {
        GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,2);
    }

    //delay();                                              // create a delay of ~1/2sec

    i16ToggleCount += 1;                                    // keep track of #toggles

    Log_info1("LED TOGGLED [%u] TIMES",i16ToggleCount);     // send toggle count to UIA
    };
}


//---------------------------------------------------------------------------
// delay()
//
// Creates a 500ms delay via TivaWare fxn
//---------------------------------------------------------------------------

void delay(void)
{
     SysCtlDelay(6700000);      // creates ~500ms delay - TivaWare fxn
}

void blink_target_swi(void)     // Software driven interrupt
{
   Semaphore_post(semaphore());
   //Swi_post(blink_target_SWI);
   TimerIntClear(TIMER2_BASE,TIMER_TIMA_TIMEOUT);         // must clear timer flag FROM timer
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)