首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集成到Qt创建器中的Keil C51工具

集成到Qt创建器中的Keil C51工具
EN

Stack Overflow用户
提问于 2018-04-09 05:54:17
回答 2查看 364关注 0票数 0

我喜欢Qt Creator开发环境,现在需要使用Keil C51编译器/工具编译一些C代码。

可以将Qt Creator IDE与Keil C51工具一起使用吗?有人能详细描述一下如何设置吗?

或者-是另一个可以与Qt Creator集成的8052芯片编译器吗?

EN

回答 2

Stack Overflow用户

发布于 2018-06-12 20:01:09

我可以确认,我可以在C51中使用QT。

环境

我使用QT作为编辑器。和Keil C51作为编译器。我用纯C(不是C++)为STC微控制器写了一个程序。

TLDR

我使用Windows批处理文件编译工作目录中的所有*.c文件,然后将其链接到一个十六进制文件中。然后,我设置QT (Projects、->、Build Settings、-> Build Steps、-> Custom),以便在构建阶段使用此批处理(不要忘记正确设置工作目录)。

如何获取所需的批处理文件

简单的方法

Keil可以为特定项目生成批处理(参见Project->Options for Target->Output->Create batch File)。然后在QT中使用该文件,如上所述。

这种方式的主要缺陷是-当您更改项目配置或向项目添加新文件时,您需要从Keil重新生成批处理。

更好的方式

使用从Keil生成的批处理,我编写了自己的Bath,它没有上述缺陷。

更好的方式

我猜使用Makefile比使用批处理更好,因为它给了QT更多的控制和关于编译过程中错误的信息。但我现在还没有“现成”的例子。

批处理文件描述

简而言之,这个批次:

  1. 为工作目录中的每个*.c文件设置设置和directories
  2. Calls编译器
  3. 构建*.obj列表并调用链接器以获取二进制格式的固件映像将获得的映像转换为十六进制格式的

列表:

代码语言:javascript
复制
REM "Folders"
SET C51FLDR=d:\Keil\C51
SET OUTFLDR=.\Objects
SET LSTFLDR=.\Listings
SET HEXNAME=PREP_FIRMWARE

SET C51INC=%C51FLDR%\Inc;%C51FLDR%\Inc\STC
SET C51LIB=%C51FLDR%\Lib

REM "Variables"
SET C51EXE=%C51FLDR%\BIN\C51.EXE
SET C51LNK=%C51FLDR%\BIN\BL51.EXE
SET C51HEX=%C51FLDR%\BIN\OH51.EXE
set OBJLIST=

REM "Defines"
SET CPU_TYPE=STC15W408S
SET CPU_VENDOR=STC
SET UV2_TARGET=Target 1
SET CPU_XTAL=0x02160EC0
SET SETTINGS="COMPACT ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE DEBUG OBJECTEXTEND LISTINCLUDE SYMBOLS TABS (2)"


echo ===================== Compile =====================
for %%f in (*.c) do (
echo %errorlevel%
setlocal EnableDelayedExpansion
%C51EXE% %%f  %SETTINGS% "PRINT(%LSTFLDR%\%%~nf.lst) OBJECT(%OUTFLDR%\%%~nf.obj)"
if !errorlevel! neq 0 exit /b !errorlevel!
)

echo ===================== Link =====================
call :obj_list
echo %OBJLIST%
%C51LNK%  %OBJLIST% TO "%OUTFLDR%\%HEXNAME%" PRINT("%LSTFLDR%\%HEXNAME%.m51") RAMSIZE(256) 
echo %errorlevel%
if %errorlevel% GTR 1 exit /b %errorlevel%

echo ===================== Hex =====================
%C51HEX% "%OUTFLDR%\%HEXNAME%" 
if %errorlevel% neq 0 exit /b %errorlevel%

echo ==========================================
echo Build Success
echo ==========================================
goto :eof

:obj_list
for %%f in (.\Objects\*.obj) DO call :concat %%f
set OBJLIST=%OBJLIST:~0,-1%
goto :eof

:concat
set OBJLIST=%OBJLIST%"%1",
goto :eof
票数 0
EN

Stack Overflow用户

发布于 2021-01-19 12:27:28

现在,可以将QtCreator与Qbs一起使用(从1.15开始)。此外,还可以将VSCode与Qbs扩展一起使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49723130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档