keil编译出错关于__use_no_semihosting_swi的使用
来源:互联网 发布:多益网络校招登录 编辑:程序博客网 时间:2024/06/14 16:22
__use_no_semihosting_swi,即不使用半主机模式,防止程序进入软件中断。
1.在嵌入式程序编译时如果出现printf、fopen、fclose等文件操作,因程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中:
//不使用半主机模式
#if 1 //如果没有这段,则需要在target选项中选择使用USE microLIB
#pragma import(__use_no_semihosting) //注释本行, 方法1
struct __FILE {
int handle;
};
FILE __stdout;
_sys_exit(int x)
{
x = x;
}
//__use_no_semihosting was requested, but _ttywrch was referenced, 增加如下函数, 方法2
_ttywrch(int ch)
{
ch = ch;
}
#endif
若出现如下编译错误:Error: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _ttywrch was referenced,此时你只需重写_ttywrch 函数即可
void _ttywrch(int ch){}。
2.__use_no_semihosting_swi也常用于对printf的重定向,通常是重定向到串口输出,这时只需在1中的重写函数中加入:
int fputc(int ch, FILE *f)
{
uart_send_char(ch);//你的串口发送字符函数
return ch;
}
这样即可。
- keil编译出错关于__use_no_semihosting_swi的使用
- keil编译出错关于__use_no_semihosting_swi的使用
- Keil-原文件类型不明确导致编译出错的解决方法
- keil 安装ADS后编译出错
- 关于Keil如何设置只编译修改过的文件
- 关于javah编译出错的小问题
- 关于uvc_streamer编译出错
- KEIL 编译后的芯片资源使用情况
- 关于Java使用Ant打包,编译AIDL时出错的问题
- 使用QUdpSocket时编译出错的问题
- 关于Simplicity Studio使用math.h编译出错。
- KEIL 编译出错*** ERROR L107: ADDRESS SPACE OVERFLOW
- 关于keil中生成lib和使用的记录
- Keil的常见编译警告
- KEIL编译上的问题
- KEIL编译模式的选择
- 关于keil 自定义链接脚本 编译错误
- 关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题
- Quartz时间配置格式说明与实例
- 最大公约数和最小公倍数
- acrgis api for javaScript需要对Dojo了解多少?
- 存储过程实现开窗函数功能
- Quartz说明及使用
- keil编译出错关于__use_no_semihosting_swi的使用
- JS学习之路(二)---函数
- 常见机器学习算法
- LeetCode算法题目:Next Permutation
- Sphinx匹配模式详解
- JavaScript中return的用法详解
- ubuntu格式化优盘为fat32
- 常用shell (一)
- Android中Canvas绘图基础详解