首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不停止处理器的情况下,实时地使用STM32 NUCLEO-F334R8和内置的ST-链接记录特定地址?

如何在不停止处理器的情况下,实时地使用STM32 NUCLEO-F334R8和内置的ST-链接记录特定地址?
EN

Stack Overflow用户
提问于 2022-06-21 05:47:16
回答 1查看 62关注 0票数 0

我正在努力学习如何使用SWD & openOCD非侵入性地调试单片机.

代码语言:javascript
运行
复制
while (1)
  {
      my_count++;
      HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
      HAL_Delay(750);
  }

在我的单片机上运行的代码有一个免费的运行计数器"my_count“。我想实时地采样/跟踪存储在保存"my_count“地址中的数据:我是这样做的:

代码语言:javascript
运行
复制
 while(1){// generic algorithm no specific language
mdw 0x00000000200000ac; //openOCD command to read from an address
}

0x200000ac是来自my_count文件的变量.map的地址。但是,这种方法是非常缓慢的,经验数据下降在高频。有没有其他方法可以在不经历数据下降的情况下以高频率追踪这些数据?

EN

回答 1

Stack Overflow用户

发布于 2022-06-21 12:22:07

我做了一些餐巾纸的数学,我有一个可能有用的想法。

根据参考手册,第948页,STM32F334的UART的最大波特率为9 9Mbit/s。

如果我们想在特定的地址发送内存,它将是32位。1位需要1/9 9Mbps或1.111*10^(-7)s,乘以32位,等于3.555微秒。很明显,就像我说的,这纯粹是餐巾纸的数学。有启动和停止比特涉及。但我们有很大的回旋余地。您也可以轻松地将64位安装到传输中。

现在,我已经向互联网查询,似乎基于STM32F103的ST链路的最大波特率可以达到4.5Mbps。很遗憾,但我们只需要把时间加倍。3.55*2 = 7.1us为32位,14.2us为64位传输.即使有一些起点和停止位的开销,我们似乎仍然符合我们的25美元的时间预算。

因此,建议如下:

您有一个定时器设置为25 an周期,触发中断,激活DMA UART传输。这样,您的MCU实际上很少开销,因为DMA将自动处理传输,而您的MCU可以在此期间做它想做的任何事情。输入和退出计时器ISR实际上将是由此造成的最大开销,因为在ISR中,您实际上将翻转一对位,告诉DMA通过UART @ 4.5Mbps发送内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72695890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档