首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与C中的STM32芯片内存交互

与C中的STM32芯片内存交互
EN

Stack Overflow用户
提问于 2017-05-05 12:41:27
回答 2查看 1K关注 0票数 1

我想与STM32芯片的内存STM32L476进行交互,首先读取和存储其电子签名(MCU_ID),然后在内存中写入数据。我正在使用链接到JTAG ST-链接STM32QFP64套接字。

我在C方面很好,但真正开始了嵌入式编程,所以我选择了Atollic IDE,因为它看起来相当完整,并且基于我之前已经使用过的Eclipse。

我的问题是,我找不到一些列出函数、变量等的文档。我可以用来与芯片进行交互。我在ST网站上搜索了几乎所有的PDF,阅读ST的GitHub,但是由于我是初学者,我可能会错过那些信息,因为我不知道我在搜索什么样子。

下面的代码是令人不悦和完全想象的,但是它可以帮助理解我想要做的事情,我在某种程度上是这样想的:

代码语言:javascript
复制
#define MEMORY_ADRESS_MCU_ID FFFFF // A memory adress ( I should be able to find it in STM32L476 documentation)
#define MEMORY_ADRESS_TO_WRITE FFFF // Same

unsigned extractMCUID() {

   return READ_IN_MEMORY(MEMORY_ADRESS_MCU_ID); // Returns the ID stored in a particular memory adress

}

void writeData(char* d) {

   WRITE_IN_MEMORY(MEMORY_ADRESS_TO_WRITE, d); // Writes data in specified memory adress

}

因此,在这种情况下,甚至在更广泛的情况下:

( 1)我应该在哪里寻找这类文件?

2)这些函数和变量是否取决于我所处理的STM32芯片?

( 3)如果不是在StackExchange上,我在哪里可以找到答案1)和2)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-05 13:13:42

STM为每个MCU发布几种类型的文档,我很难猜测哪个文档将包含我正在寻找的信息片段。因此,我在文档中搜索相关关键词,直到缩小信息范围。两个最重要的文件是数据表和参考手册,所以我总是从它们开始。

在本例中,我开始搜索数据表中的"MCU_ID“,但一无所获,因此我搜索了更通用的"ID”,并发现它与更具体的关键字“唯一”相关联。我在数据表中搜索“唯一”,但没有找到注册地址信息。于是,我在参考手册中搜索了“唯一ID”,并在1808页49.1节中找到了寄存器的基本地址。

是的,像这样的细节可以改变从一个STM MCU到下一个,所以你需要确保你使用的是正确的数据表和参考手册。然而,STM提供了一个名为STM32Cube的硬件抽象层(HAL),它抽象出单片机的特定细节,并允许您调用更多独立于MCU的通用函数。

编辑:,我可能向您指出了错误的ID寄存器。Clifford在评论中指出,地址0xE0042000有一个MCU设备ID寄存器。这个MCU设备ID寄存器不同于唯一的设备ID寄存器,它在参考手册第1782页第48.6.1节中进行了描述。

票数 1
EN

Stack Overflow用户

发布于 2017-05-05 12:52:47

您可能想看看这里:http://www.openstm32.org

这部分可能给你一个提示:char in_ccram_buffer[1024] __attribute__((section("ccmram")));

我的AVR代码中有类似的内容:

代码语言:javascript
复制
 const uint16_t tempTable[42] __attribute__((section(".eeprom"))) = ...

很有魅力。

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

https://stackoverflow.com/questions/43805259

复制
相关文章

相似问题

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