标签: stm32ldiscovery

什么是弱函数,它们的用途是什么?我正在使用 stm32f429 微控制器

维基百科说:

弱符号表示在链接可执行和可链接格式 (ELF) 目标文件期间的特殊注释符号。默认情况下,没有任何注释,目标文件中的符号是强符号。在链接期间,强符号可以覆盖同名的弱符号。相比之下,共享名称的两个强符号在链接时会产生链接错误。链接二进制可执行文件时,弱声明的符号不需要定义。相比之下,(默认情况下)没有定义的声明强符号会触发未定义符号链接错误。C或C++语言标准没有提到弱符号;因此,将它们插入代码不是很便携。即使两个平台支持将符号标记为弱的相同或相似的语法,语义也可能在细微之处有所不同,例如

什么是弱函数,它们的用途是什么?我正在使用 stm32f429 微控制器。库中有一些弱函数。但我无法理解,它们是什么以及它们的用途!

我在谷歌上搜索了它,但没有得到满意的答案。

c stm32f4discovery stm32ldiscovery stm32f4

10
推荐指数
2
解决办法
1万
查看次数

STM32L0的自动波特率检测

我不能让自动波特率检测工作STM32L0.我正在使用硬件抽象层(HAL).

我的初始化代码是:

/* USART1 init function */
void MX_USART1_UART_Init(void)
{

  huart1.Instance = USART1;
  huart1.Init.BaudRate = 300;
  huart1.Init.WordLength = UART_WORDLENGTH_9B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_EVEN;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  huart1.Init.OneBitSampling = UART_ONEBIT_SAMPLING_DISABLED;
  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_AUTOBAUDRATE_INIT;
  huart1.AdvancedInit.AutoBaudRateEnable = UART_ADVFEATURE_AUTOBAUDRATE_ENABLE;
  huart1.AdvancedInit.AutoBaudRateMode = UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT;
  HAL_UART_Init(&huart1);


}
Run Code Online (Sandbox Code Playgroud)

我通过UART1发送的字节是:

        0   1   2   3   4   5   6   7   8   
000x    68  0B  0B  68  53  FD  52  FF  FF  .. etc.

0x68 = 0b01101000
0x0B = 0b00001011
0xFD = …
Run Code Online (Sandbox Code Playgroud)

c embedded stm32 baud-rate stm32ldiscovery

5
推荐指数
1
解决办法
2005
查看次数

无法获取`https://github.com/rust-lang/crates.io-index`

我在通过https://docs.rust-embedded.org/discovery/03-setup/index.html安装时遵循此操作 ,它会引发错误 如何解决此错误?itmdumpcargo install itm --vers 0.3.1error: failed to fetch https://github.com/rust-lang/crates.io-index Caused by: error inflating zlib stream; class=Zlib (5)

rust stm32ldiscovery

5
推荐指数
0
解决办法
4149
查看次数

如何在STM32中延迟一个时钟周期?

问题与主题一样简单。如何在STM32中延迟确切的一个时钟周期?如果控制器以168MHz运行,则一个时钟周期等于1 / 168MHz,即5.95ns吗?

assembly clock stm32 stm32ldiscovery

3
推荐指数
1
解决办法
1万
查看次数

PLL 时钟配置

我正在使用 STM32L152RB 板,我正在尝试配置系统时钟以使用 PLL 时钟,但 RCC_FLAG_PLLRDY 标志正在设置,因此程序卡在 while 循环中。请让我做错了什么

EnableHSI();
RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_3,RCC_PLLDiv_2);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK);
t=GetSystemClockSource();
Run Code Online (Sandbox Code Playgroud)

stm32 stm32f4discovery stm32ldiscovery stm32l152

3
推荐指数
1
解决办法
5657
查看次数

使用 STLINK 和 Linux 烧录 ST 板

我正在尝试通过 STLINK 连接器从 Linux 在命令行中刷新 ST 板(STM32 发现套件 STM32L072)。

要使用 STLINK 进行闪存,您只需将要闪存的二进制文件复制粘贴到 USB 读卡器(与 STLINK 关联)中即可;

为此,使用dmesg,我找到了/dev/sdx。然后我挂载/dev/sdx

mkdir /mnt/board
sudo mount /dev/sdx /mnt/board
Run Code Online (Sandbox Code Playgroud)

使用ls命令我可以读取 ST 板的文件夹:

$ ls /mnt/board/
DETAILS.TXT  MBED.HTM
Run Code Online (Sandbox Code Playgroud)

==>我可以读ST板。

现在我可以将二进制文件复制到 ST 板上。复制后应该自动完成刷新:

sudo cp mybinarytoflash.bin /mnt/board
Run Code Online (Sandbox Code Playgroud)

我们可以看到 STLINK 的 LED 呈绿色闪烁。二进制文件正在闪烁。

但我有两个主要问题:

  • 有时,将二进制文件复制到/mnt/board后,不会立即将二进制文件刷新到 ST 板。有时我们必须等待 30 秒以上。

  • 我的第二个问题是,刷机后,ST板没有RESET。当我在装有Windows的计算机上执行此过程时,ST板在闪烁后重置。我需要对/dev/sdx或其他东西做一些事情吗?

非常感谢你,纪尧姆

linux command-line stm32 raspberry-pi stm32ldiscovery

2
推荐指数
1
解决办法
1万
查看次数