[STM32] NOTE08-STM32中的汇编代码使能与串口冲突问题

这个问题对应正点原子开发板的寄存器版本的实例工程-实验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行,最终串口的通信也是正常的

————————————————————————————————————————

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值