This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM48L952:RM48L952ZWT:设置一个定时器

Guru**** 2615655 points

Other Parts Discussed in Thread: RM48L952, HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/779036/rm48l952-rm48l952zwt-setting-up-a-timer

器件型号:RM48L952
主题中讨论的其他器件: HALCOGEN

RM48L952ZWT-FREE-RTOS。 在我的项目中、我还需要几个间隔计时器。 定时器 RTI 忙时 FREE_RTOS。 是否可以使用 N2HET 形成单个间隔?
我试过,我没有成功。
屏幕截图测试程序:

#define SCI_RX_4B_PAUSE_pwmTIMER pwm1

#define SCI_TX_1B_PAUSE_pwmTIMER pwm2

 void vTaskBlink (void *pvParameters)

// 500毫秒的块。

const TickType_t xDelay = 500/ portTIK_PERIOD_MS;

 while (1){

  gioToggleBit (hetPORT1、PIN_HET_31);  // Blink

    RunPwmHet1计时器(SCI_RX_4B_PAUSE_pwmTIMER、100);

  vTaskDelay (xDelay);

 }

void appl_Main ()

hetInit();

gioInit();

gioSetDirection (hetPORT1、0xFFFFFFFF);

_enable_IRQ ();

 

if (xTaskCreate (vTaskBlink、(const char *)"TaskBlink"、configMINIMAL_STACK_SIZE、NULL、1、 null)!= pdTRUE)

    while (1); //无法创建任务

vTaskStartScheduler();

while (1);

 

RunPwmHet1计时器(UINT32 PWM、浮点间隔_us)

hetSIGNAL_t HetSignal;

 pwmDisableNotification (hetREG1、PWM、pwmEND_for_period);

 HetSignal.Duty = 50;            //占空比、以周期的%(uint32)为单位

HetSignal.Period = Interval_us;  //以 us 为单位的周期(float64)

 pwmSetSignal (hetRAM1、PWM、HetSignal);

pwmStart (hetRAM1、PWM);

pwmEnableNotification (hetREG1、PWM、pwmEND_for_period);

StopPwmHet1定时器(UINT32 PWM)

pwmDisableNotification (hetREG1、PWM、pwmEND_for_both);

pwmStop (hetRAM1、PWM);

 

void pwmNotification (hetBASE-t * hetREG、UINT32 PWM、UINT32通知)

if (hetREG = hetREG1){

  开关(PWM){

    SCI_RX_4B_PAUSE_pwmTIMER 案例

    if (notification =pwmEND_of period || notification == pwmEND_of){

       StopPwmHet1定时器(SCI_RX_4B_PAUSE_pwmTIMER);

     中断;

    SCI_TX_1B_PAUSE_pwmTIMER 案例

     中断;

    默认值:

      中断;

  }                                 //开关(PWM){

}                                    // if (hetREG == hetREG1){

否则、如果(hetREG = hetREG2){

 }                                    // if (hetREG == hetREG2){

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    RTI 模块有4个比较模块。 4个定时器可独立配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不幸的是,这个问题没有得到解决。 FreeRTOS 使用项目模块 rtiCompare0。 我正在尝试使用 rtiCompare3模块来组织一次性计时器。 但是、如果我没有标记 HALCoGen -> RM48L952 ->驱动程序启用->启用 RTI 驱动程序、则 CCS 链接器会给出以下错误:

    未定义            的首次引用           

    符号                                 

    ------             --------           

    rtiCompare3中断  ./source/sys_vim.obj       

    rtiDisableNotification /Application/appl_main.obj

    rtiEnableNotification /Application/appl_main.obj

    rtiInit              /Application/appl_main.obj

    rtiResetCounter      ./Application/appl_main.obj

    rtiStartCounter      ./Application/appl_main.obj

    错误#10234-D:未解析的符号仍然存在

    错误#10010:链接期间遇到错误;未生成"Bma_RTOS.out"

     如果我选中 HALCoGen -> RM48L952 -> Driver Enable -> Enable RTI driver、则 CCS 链接器给出以下错误。

    错误#10056:重新定义符号"vPortPreemptiveTick":首先在"./FreeRTOS/os_portasm.obj 中定义;在"./source/rti.obj 中重新定义

    错误#10010:链接期间遇到错误;未生成"Bma_RTOS.out"

    有没有办法解决这个问题?

    此致、Talgat Burganov。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    如果要使用 RTI、必须在 HALCOGen 中启用 RTI。 否则、编译工程时会出现错误。 FreeRTOS 仅使用1个 RTI 比较、HALCOGen 禁用 FreeRTOS 示例的 RTI 配置。 您需要手动启用比较1/2/3。 我将检查 FreeRTOS 项目、并告诉您需要修改哪个文件才能使用其他 RTI 比较1/2/3。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    prvSetupTimerInterrupt()位于 OS_port.c 中