我在互联网上找不到任何关于 STM32 编程的好文档。STM 自己的文档除了寄存器功能之外什么都没有解释。如果有人能解释我的以下问题,我将不胜感激?
我注意到在 STM 提供的所有示例程序中,main() 的局部变量总是在 main() 函数之外定义(偶尔使用 static 关键字)。有什么理由吗?我应该遵循类似的做法吗?我应该避免在 main 中使用局部变量吗?
我有一个在时钟中断句柄中更新的全局变量。我在另一个函数中使用相同的变量作为循环条件。我不需要使用某种形式的原子读取操作来访问这个变量吗?我怎么知道时钟中断在函数执行过程中不会改变它的值?每次我需要在函数中使用这个变量时,我是否需要取消时钟中断?(但是,这对我来说似乎非常无效,因为我将它用作循环条件。我相信应该有更好的方法来做到这一点)。
Keil 会自动插入一个以汇编语言编写的启动代码(即 startup_stm32f4xx.s)。此启动代码具有以下导入语句: IMPORT SystemInit IMPORT __main 。在“C”中,这是有道理的。但是,在 C++ 中,main 和 system_init 都有不同的名称(例如 _ int _main__void)。即使不使用“extern“C””,这个启动代码如何仍然可以在 C++ 中工作(我试过了,它成功了)。c++ 链接器 (armcc --cpp) 如何将这些语句与正确的函数相关联?