你的代码有点复杂,我没法调试,我基于我们V7板子做了个RTX5的,供参考
V7-401_RTX5 RTT.7z
(2.8 MB, 下载次数: 3)
(1)使用的主RAM空间AXI SRAM
(2)关闭AXI SRAM的Cache,否则RTT会检测成Cache里面的数据,导致出错。
[C] 纯文本查看 复制代码 /* 配置AXI SRAM的MPU属性为NORMAL, NO Read allocate,NO Write allocate */
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
MPU_InitStruct.BaseAddress = 0x24000000;
MPU_InitStruct.Size = MPU_REGION_SIZE_512KB;
MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
MPU_InitStruct.Number = MPU_REGION_NUMBER0;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;
MPU_InitStruct.SubRegionDisable = 0x00;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
HAL_MPU_ConfigRegion(&MPU_InitStruct);
(3)测试代码:
[C] 纯文本查看 复制代码 /*
*********************************************************************************************************
* 函 数 名: AppTaskLED
* 功能说明: LED闪烁。
* 形 参: 无
* 返 回 值: 无
* 优 先 级: osPriorityHigh2
*********************************************************************************************************
*/
#include "SEGGER_RTT.h"
void AppTaskLED(void *argument)
{
const uint16_t usFrequency = 5; /* 延迟周期 */
uint32_t tick;
/* 配置通道0,上行配置*/
SEGGER_RTT_ConfigUpBuffer(0, "RTTUP", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
/* 配置通道0,下行配置*/
SEGGER_RTT_ConfigDownBuffer(0, "RTTDOWN", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
/* 获取当前时间 */
tick = osKernelGetTickCount();
while(1)
{
bsp_LedToggle(2);
/* 相对延迟 */
SEGGER_RTT_SetTerminal(0);
SEGGER_RTT_printf(0, "大家好,世界你好,hellword = %d\r\n", tick);
tick += usFrequency;
osDelayUntil(tick);
}
}
测试效果动态:
如果你那边是通信速度不稳定造成的,可以这里选择降低些试试:
|