本帖最后由 slotg 于 2018-12-18 23:50 编辑
Mbed 是 ARM 公司一个很重要的在线编程工具,由于系统封装了很多对于芯片的内部与外设资源的初始设定工作,让使用者只需要将心思放在所要实现的功能编程上,因此让编程这项工作单纯了许多,所以我也经常使用 Nucleo 板在 Mbed 环境下调试一些程序,比如说新买的一些扩展板或是传感器就先在 Mbed 底下测试与熟悉功能。
在 ST 官网的站内搜索我使用了 mbed 关键字搜寻网站内相关的资料,在设计资源底下的这个文档引起了我的兴趣:
使用mbed进行STM32开发及STM32F0的时钟问题
https://www.stmcu.com.cn/Designresource/design_resource_detail/file/393549/lang/ZH/token/7aff3bc998beff056dae74b6872ebb8c
文档的内容是作者使用 NUCLEO-F030R8 开发板在 Mbed 底下运行了基础的 LED 闪灯程序 (Nucleo_blink_led) 时发现 LED 闪烁的速度并不是如主回路程序代码所设定的亮1秒熄灭0.2秒这样的周期!作者进一步的运行了另一个串口打印程序 (Nucleo_printf) 时发现程序设定的波特率 9600 实际上却是 57600,与目标波特率 9600 间是有 6 倍的差距,因此怀疑程序在时钟的设定代码上是有问题的!文档内容详细的描述了作者将代码 Export 出来在 KEIL IDE 下找问题的过程,详细的过程可以看的出作者是属于大神级别的高手了。
我关切的是这算是 Mbed 的一个严重 bug,只是这个文档发布的日期是 2015 年,而这个问题现在还存在吗?刚好我手上也有这一块 NUCLEO-F030R8 板,因此我也在 Mbed 底下跑一下作者所测试的这 2 个例程,而结果都是正常的,LED 闪灯的速度正确而串口波特率也是 9600。另外代码的档案架构跟文档所写的档案架构也不太一样了,这几年 Mbed 改版过多次功能是越来越强大,过去的一些 bug 相信也都抓的差不多了。
|