Thread 中讨论的其他器件:SYSBIOS
尊敬的 TI:
我想使用 C 代码创建一个计时器模块。 您能给我举个例子吗?
我已将 TI SYS/BIOS 用户指南运行时示例从 p176参考到 p177
我 只是复制并粘贴了项目中的示例代码、但发生了错误、我无法确定重要的是什么。
红色代码是我包含的代码。 每当此代码运行时、CCS 控制台上都会出现此错误消息。
xdc.runtime.Core:第87行:断言失败:A_initializedParams:未初始化的 Params 结构
xdc.runtime.Error.raise:终止执行
TI.SYSBIOS.KNL.Semaphore:第311行:断言失败:A_badContext:调用上下文错误。 必须从任务调用。
xdc.runtime.Error.raise:终止执行
TI.SYSBIOS.KNL.Semaphore:第311行:断言失败:A_badContext:调用上下文错误。 必须从任务调用。
xdc.runtime.Error.raise:终止执行
TI.SYSBIOS.KNL.Semaphore:第311行:断言失败:A_badContext:调用上下文错误。 必须从任务调用。
xdc.runtime.Error.raise:终止执行
我想在没有 XGCONF 帮助的情况下自由创建和删除任何模块
如何将 RTOS 应用程序加载到闪存等存储器中?
我注意 到我的应用程序在上电复位后似乎被擦除,这似乎是我的应用程序在上电复位之前加载到 SARAM 中。
非常感谢
/*
*==== main.c ======
*
#include
#include
#include
#include
#include
#include
#include "F28x_Project.h"
uint32 j = 0;
uint32k = 0;
uint32 ModifyFreq = 5000;
Timer_handle timerHandle;
//Timer_Handle timerHandle;
//Task_Handle 任务;
//Error_Block EB;
/*
*==== TimerISR ====
*
空 TimerISR()
{
J++;
if (j >= ModifyFreq){
J = 0;
GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1;
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
}
}
void TimerISR1();
/*
*==== taskFxn ====
*
void taskFxn (UARg a0、UARg A1)
{
system_printf ("enter taskFxn ()\n");
Task_sleep (10);
system_printf ("exit taskFxn ()\n"\});
system_flush();/*强制 SysMin 输出到控制台*/
}
空 tickFxn (UArg0)
{
K++;
}
/*
*==== main ====
*
int main()
{
Timer_Params timerParams;
Timer_handle timerHandle;
Task_Handle 任务;
ERROR_Block EB;
system_printf ("enter main()\n");
ERROR_INIT (&EB);
任务= Task_create (taskFxn、NULL、&EB);
if (task =NULL){
System_printf ("Task_create() failed!\n");
BIOS_exit (0);
}
Timer_Params_init (&timerParams);
timerParams.period = 2000;/* 2ms */
timerHandle = Timer_create (Timer_any、tickFxn、&timerParams、&EB);
if (timerHandle == NULL){
System_abort ("计时器创建失败");
}
//GPIO34、GPIO31
EALLOW;
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0;
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO31 = 1;
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;
EDIS;
BIOS_start();/*不返回*/
返回(0);
}
空 TimerISR1()
{
K++;
// System_printf ("当前周期=%d\n"、Timer_getPeriod (timerHandle));
}