STM32半主机模式
在keil中编程时常会遇到__use_no_semihosting_swi的警告,这时你就是进入了半主机模式。
在嵌入式的编程中你是避免不了使用printf、fopen、fclose等函数的但是因为嵌入式的程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中:
若出现如下编译错误:Error: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _ttywrch was referenced,此时你只需重写_ttywrch 函数即可
可参照上上一个文章
MDK上开启半主机模式-需要SWO线(换言之,需要使用JTAG接线)
当目标板脱离仿真器(jlink/ulink)单独运行时,不能使用半主机模式
pragma import(__use_no_semihosting_swi)
这条语句可以关闭半主机模式,只需要在任意一个C文件中加入即可。
还有在使用keil编程的过程中还会遇到..\OBJ\USART.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced
说的大概的意思就是关掉了半主机模式,但是函数__ttywrch被要求了,这时要把函数重写一遍,当然出现其他的函数被要求的时候,可以参考上面的函数进行编写,只要放到任意一个.c源文件之中即可。
**关于 microlib
microlib 是缺省 C 库的备选库。 它用于必须在极少量内存环境下运行的深层嵌入式应用程序。 这些应用程序不在操作系统中运行。microlib 不会尝试成为符合标准的 ISO C 库。
microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,例如,memcpy()。
**
总结
以上是生活随笔为你收集整理的STM32半主机模式的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 新工科背景下的计算机类专业人才培养探讨
- 下一篇: “新一代互联网安全(BII)管理:理论与