当前位置: 首页 > wzjs >正文

番禺网站建设公司哪家好深圳专业网站

番禺网站建设公司哪家好,深圳专业网站,硬件开发平台有哪些,wordpress主题在哪个文件夹在 ARM 编译器(如 Keil MDK) 中禁用半主机(Semihosting)并实现标准库的基本功能,需要以下步骤: 1. 禁用半主机 #pragma import(__use_no_semihosting) // 禁用半主机模式作用:防止标准库函数&…

ARM 编译器(如 Keil MDK) 中禁用半主机(Semihosting)并实现标准库的基本功能,需要以下步骤:


1. 禁用半主机

#pragma import(__use_no_semihosting)  // 禁用半主机模式
  • 作用:防止标准库函数(如 printfscanf)依赖调试器进行 I/O 操作。
  • 后果:必须手动实现底层函数(如 _sys_exitfputc),否则会链接失败。

2. 定义简化 FILE 结构体

struct __FILE {int handle;  // 占位符,无实际用途(可简化)
};
FILE __stdout, __stdin;  // 标准输入/输出流
  • 说明
    • 标准库需要 FILE 结构体,但禁用半主机后无需复杂实现,仅需满足编译要求。
    • 如果不需要文件操作,可直接定义为空结构体:
      struct __FILE { int dummy; };
      

3. 必须实现的系统函数

(1) 程序退出处理 _sys_exit
#include "stm32f10x.h"  // 假设使用 STM32void _sys_exit(int x) {// NVIC_SystemReset();  // 硬件复位(推荐)// 或 while(1);      // 简单死循环
}
  • 作用:覆盖库的默认退出函数,避免链接错误。
  • 注意
    • 如果调用 exit() 或程序结束,会执行此函数。
(2) 输出重定向 fputc(支持 printf
int fputc(int ch, FILE *f) {USART_SendData(USART1, (uint8_t)ch);  // 发送到 USART1while (!USART_GetFlagStatus(USART1, USART_FLAG_TXE));  // 等待发送完成return ch;
}
  • 关键点
    • printf 依赖此函数输出字符。
    • 需提前初始化 USART(波特率、引脚等)。
(3) 输入重定向 fgetc(支持 scanf
int fgetc(FILE *f) {while (!USART_GetFlagStatus(USART1, USART_FLAG_RXNE));  // 等待接收数据return (int)USART_ReceiveData(USART1);
}
  • 关键点
    • scanf 依赖此函数读取字符。
    • 检查 USART_FLAG_RXNE(接收标志),而非 TC(发送完成)。

4. 完整示例代码

#pragma import(__use_no_semihosting)#include <stdio.h>
#include "stm32f10x.h"  // STM32 头文件// 简化 FILE 结构体
struct __FILE { int dummy; };
FILE __stdout, __stdin;// 系统函数
void _sys_exit(int x) { NVIC_SystemReset(); //也可以为空 }// 输出重定向(printf)
int fputc(int ch, FILE *f) {USART_SendData(USART1, (uint8_t)ch);while (!USART_GetFlagStatus(USART1, USART_FLAG_TXE));return ch;
}// 输入重定向(scanf)
int fgetc(FILE *f) {while (!USART_GetFlagStatus(USART1, USART_FLAG_RXNE));return (int)USART_ReceiveData(USART1);
}int main() {// 初始化 USART1(需自行实现)USART_InitTypeDef USART_InitStruct = { ... };USART_Init(USART1, &USART_InitStruct);USART_Cmd(USART1, ENABLE);printf("Hello, No-Semihosting!\n");  // 通过 USART1 输出int num;scanf("%d", &num);                  // 从 USART1 读取输入return 0;
}

5. 关键注意事项

功能实现要求
禁用半主机#pragma import(__use_no_semihosting)
FILE 结构体定义 struct __FILE__stdout/__stdin(可简化)
_sys_exit必须实现,建议硬件复位(NVIC_SystemReset())或死循环(while(1)
fputc重定向 printf 到硬件(如 UART)
fgetc重定向 scanf 从硬件读取(需检查 USART_FLAG_RXNE
硬件初始化确保 USART/UART 已正确配置(波特率、引脚模式等)

6. 常见问题解决

  • 问题1:printf 无输出
    • 检查 fputc 是否实现,并确认 USART 初始化正确。
  • 问题2:链接错误 undefined _sys_exit
    • 确保所有必需函数(_sys_exitfputc 等)均已实现。
  • 问题3:scanf 无法接收数据
    • 检查 fgetc 是否使用 USART_FLAG_RXNE,而非 TC 标志。

7. 扩展适配其他硬件

  • USB-CDC 重定向:替换 fputc/fgetc 为 USB 通信函数。
  • LCD 输出:修改 fputc 将字符显示到 LCD。
  • GCC 编译器:需实现 _write_read 而非 fputc/fgetc

如果需要针对 特定硬件平台(如 STM32、ESP32、NXP) 的详细配置代码,请提供具体型号!


文章转载自:

http://jQwpC3hY.qgghr.cn
http://Nt6tCy2D.qgghr.cn
http://g4wwUmiD.qgghr.cn
http://5L3HCAWv.qgghr.cn
http://wJkqkTkk.qgghr.cn
http://c5CeJAOf.qgghr.cn
http://IwPkOoXl.qgghr.cn
http://ZyvEfPDw.qgghr.cn
http://y2BCktRy.qgghr.cn
http://E1Mdi9n3.qgghr.cn
http://AFVGK47p.qgghr.cn
http://hvfDwyTy.qgghr.cn
http://uR07taLK.qgghr.cn
http://t0muSozL.qgghr.cn
http://owUEWvGH.qgghr.cn
http://kyXNehbG.qgghr.cn
http://4g5pNcJ8.qgghr.cn
http://KJbucZ5G.qgghr.cn
http://tEVVwqdI.qgghr.cn
http://VGBZqzlf.qgghr.cn
http://5sOaO8Se.qgghr.cn
http://ntVf2Jv4.qgghr.cn
http://BnFqPKnX.qgghr.cn
http://FcWGH27v.qgghr.cn
http://C3CRzCmc.qgghr.cn
http://QD13HLFJ.qgghr.cn
http://XfU1fS1D.qgghr.cn
http://KBILdPF0.qgghr.cn
http://xN75DSa7.qgghr.cn
http://8LvLG8AI.qgghr.cn
http://www.dtcms.com/wzjs/632407.html

相关文章:

  • 网站开发的发展jsp商务网站建设
  • ip域名找网站服装店网站建设规划书
  • 建立门户公司网站进出口代理公司
  • 包头教育平台网站建设郑州商城网站开发
  • 南昌专业网站建设公司哪家好用易语言做抢购网站软件
  • 做图片网站会被wordpress 图片太大
  • 国外做电子元器件在哪个网站优良的定制网站建设公司
  • 永明投资建设有限公司网站wordpress设置登录背景图片
  • 注销备案号 网站泰安房产网签查询
  • 三亚制作网站张店免费做网站
  • 苏州官方网站建站百度权重提升
  • 网站文件夹没有权限设置seo优化排名技术百度教程
  • 网站黑名单查询网站建设学校培训学校
  • 外国网站设计风格佛山哪家网站建设比较好
  • 长沙企业网站建设优度网络管理系统的基本组件包含哪些
  • 福安做网站最好营销策划的十个步骤
  • 江苏省和住房城乡建设厅网站首页网站开发 项目介绍
  • 网站制作综述wordpress改版权设置
  • 湖南城乡和建设厅网站wordpress编辑器视频教程
  • 孝感网站建设专家wordpress阅读设置
  • 推广做网站多少钱民企品牌建设
  • 在线做海报的网站入侵wordpress
  • 建设企业网站初始必备的六大功能seo快速建站
  • wordpress会员下载功能东莞网站seo技术
  • 网站改版中 模板公司做网站需要提供的材料
  • 企业类网站包括哪些代做毕业设计网站有哪些
  • 襄阳市建设厅官方网站百度是不是门户网站
  • 建设集团网站wordpress 幻灯数据库
  • 如何查看网站的服务器位置做直播网站前端
  • 开通网站软件的会计科目怎么做建设官网银行