在 Adventure 位于深圳的电子设备组装厂(SZE)里,小朱狠狠的对自己说。
他刚刚在调试 STM32F407VG 的 SPI 功能。就在昨天,他刚刚调试好了 STM32F407VG 的 USART1 的功能,让这块微控制器芯片可以和电脑主机通过串口通信(由此将来可以衍生出很多种通过电脑主机对其它电子设备进行集中控制的应用)。所以今天,小朱将 USART1 的部分代码直接拷贝到 SPI 功能函数里面,结果始终无法工作。
“为什么呢?”就在小朱疑惑的时候,猛然间注意到了这样一段代码:
1: RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
这里的“RCC_APB2PeriphClockCmd” 函数是开启 APB2 总线上外设时钟的命令,从 USART1 代码里面直接拷贝过来的,原来的代码是:“RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);” 小朱将“RCC_APB2Periph_USART1” 改成了“RCC_APB1Periph_SPI2” 就直接用了。
程序也没报错。
但是,SPI2 这个外设,在 STM32F407VG 上面,是挂在 APB1 总线上的啊,和 USART1 是不同的!所以,正确的写法应该是:
1: RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
唉,这一天过的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述