本帖最后由 会飞的猪_2020 于 2022-5-11 13:58 编辑
我看到Conf.h里关于TimeStamp Source的选项有如下五个:
DWT
SysTick
CMSIS-RTOS2 System Timer
User Timer(Normal Reset)
User Timer(Powr-On Reset)
因为我是在L0单片机里,移植了ThreadX,因为板子没串口,但是我又想看调试数据,突然记起来有个EventRecoder有打印的功能。
然后,M0内核没DWT所以第一个用不了。
选了第二个编译后,提示Systick_Handler重定义了。看了一下ThreadX的SysTick_Handler是用汇编写的。而EventRecoder的那部分代码是只读的,不知道咋把两个结合起来。
[C] 纯文本查看 复制代码 SysTick_Handler:
@ VOID SysTick_Handler (VOID)
@ {
@
PUSH {r0, lr}
#if (defined(TX_ENABLE_EXECUTION_CHANGE_NOTIFY) || defined(TX_EXECUTION_PROFILE_ENABLE))
BL _tx_execution_isr_enter // Call the ISR enter function
#endif
BL _tx_timer_interrupt
#if (defined(TX_ENABLE_EXECUTION_CHANGE_NOTIFY) || defined(TX_EXECUTION_PROFILE_ENABLE))
BL _tx_execution_isr_exit // Call the ISR exit function
#endif
POP {r0, r1}
MOV lr, r1
BX lr
@ }
第三个选项应该需要CMSIS-RTOS2的封装层,我这里也没有所以应该也不能用。
只剩下第四个和第五个选项了。
Normal 和 Power-On 这两个不知道有什么区别?
编译之后,看到它需要我实现三个函数。
EventRecoderTimerGetCount
EventRecoderTimerGetFreqEventRecoderTimerGetSetup
不知道这三个函数应该怎么写?在哪里有手册之类的说明。
|