这个问题对应正点原子开发板的寄存器版本的实例工程-实验0
实验0的内容是使用正点原子的串口打印函数,在完成系统初始化之后,向串口打印随时间+1秒的信息,即从t=1到t=n逐渐累加(n取决于最初设定的u8,u16,u32等等,为u8的时候的取值范围就为0-255),但是在引导文件中注释了正点原子添加的使能浮点运算单元的4行汇编代码之后,串口就不能再输出信息了。
这个问题在使用HAL库版本的时候就没有,但是不知道是为什么
在HAL库版本的工程中,对应的项目的引导文件是没有加上这4行的,但是串口打印的函数工作非常正常
请教了老师,首先明白了这样四行汇编代码的意义:
第200行 将立即数(其实是一个地址)0xE000ED88赋值寄存器R0
第201行 去内存中寻找地址为0xE000ED88的位置的值,并将其赋给寄存器R1
第202行 将R1寄存器中的20~23位的值置1,这里是使用了或和移位操作
第203行 将R1寄存器中修改后得到的新值写会内存地址为0xE000ED88处
查了芯片手册:STM32F3与F4系列Cortex M4内核编程手册.pdf
浮点使能的解释:
具体的原因,明天请教老师之后才知道
—————————————————2019/9/26——————————————————
问了工训的老师,老师也不知道,看来只能靠自己把这个MCU学精之后,自己来答了
老师给的思考方向是使能浮点协处理器的目的是支持main中的使用协处理器的代码
在使用单步调试的时候,出现了硬件错误(寄存器版本删掉4行浮点数协处理器代码)
但HAL库版本的官方例程中的引导文件中没有这4行,最终串口的通信也是正常的
————————————————————————————————————————