本帖最后由 6552918 于 2022-3-7 11:43 编辑
之前使用过AT32F403A系列,这次的板子是AT32F425系列的,厂家给的定义是超值型MCU,我在看用户手册上发现,403A系列和425系列在内核描述上是有差别的,一个是M4F内核,一个是M4内核。 F425的内核是在标准M4内核基础上去掉了FPU,但保留了DSP指令集。这种对标准M4内核去掉FPU的方式,我在几年前的 ATMEL的MCU上见到过,对于成本控制是非常有意义的。由于保留了DSP指令,这款内核性能就处于M3和M4F之间,对于厂家的定位就非常好理解了。 我们看看,内核的差别在程序中是如何体现的吧 在F403A系列的Target选项卡中,有FPU是否开启的选项。 在F425系列的Target选项卡中,就没有FPU的选项。这里正好印证了内核差异的描述。 除了上面的内核差异,在对比手册时,还发现了点差异。在对比调试(MCUDBG)章节时 F403A系列对调试的描述,其中有一项是对跟踪脚分配控制的描述,这个有什么用呢?我稍后在具体介绍,先看文档差异。 而F425对这部分的描述则非常简单。 重点我们来看看MCUDBG_CTRL寄存器的说明 除了在调试状态下外设控制操作外,还有个 跟踪引脚 的控制(7:5位) 而在F425这个寄存器说明中却没有 跟踪引脚 控制(7:4位保留)的相关说明,是手册写错了还是就是没有先关功能了呢?而我又为什么要关注这个功能呢?这就要回到硬件上上来说了,我们先看一下原理图的这部分内容 我确认过图纸中的R8是焊接的,AT-LINK的SWO引脚是接到PB3上的 AT-LINK是支持SWO通信的,这种通信方式提供的另外一种芯片调试的方法,在串口被占中的情况下,可以实现在调试阶段仅用一个管脚调试信息输入和输出的方式,方便调试。而这个SWO的管脚设置就是要在MCUDBG_CTRL中设置,从上述文档中看MCUDBG_CTRL寄存器描述没有对 跟踪脚的配置 就说明是不支持相关功能的,但在引脚说明中又看到SWO的定义,明显是有矛盾的,为了验证一下到底哪错了,我们在代码中测试一下相关功能,就知道到底是哪错了。 首先我找了个F403A的板子测试了一下,先开启SWO功能的配置 再编写如下测试代码 整个流程是,初始化后使用 ITM_SendChar ('8'); 在调试窗口内输出字符8,输出正常,再再在调试窗口内输入字符 3,再将收到的字符输出到调试窗口。整个流程测试正常,说明环境配置和测试代码均没有问题。 接着,将上述配置和测试代码移植到F425的程序中。根据芯片参数修改时钟频率 在执行 ITM_SendChar ('8'); 函数后,调试窗口上并没有输出。 但通过调试窗口输入字符,接收函数确能收到输入的字符。 再将收到的字符输出到调试窗口操作后,调试窗口依然无输出。
在坛友的指导下,知道了,F425的管脚配置需要重映射才行 需要对PB3管脚进行重映射才行
在此感谢@084425
|