当前位置:首页 » 编程软件 » keil编译stm32

keil编译stm32

发布时间: 2022-04-14 01:30:21

⑴ 使用keil5编译stm32,头文件core_cmFunc.h中,是预定义__CC_ARM,还是__GNUC__

编译的时候,可能是那个地方定义了__CC_ARM, 预编译指令执行了#if defined ( __CC_ARM )下面的代码,没有执行#elif defined ( __GNUC__ )下面的代码;

#if ...
...
#elif ..
...
是条件预编译,只执行其中的一个分支

⑵ 用keil5编写stm32程序遇到的问题

rom地址和容量是根据芯片型号自动选择的,你不能改变。

仔细看下在XXXX.s文件,里边如何引导至main()地址的。

; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP

⑶ 如何使用keil uvision5编译stm32

正常建一个工程,直接点F7就可以了

⑷ Keil 编译STM32 遇到异常怎么解决

这个问题一般出现在移动库,或者将两个程序合并的时候报错
原因是旧版的库与新版的库发生冲突了,冲突的原因是旧版和新版都定义了同一个东西,比如“s32”,于是就会发生重定义的报错
解决这个问题的方法其实也不难,因为编写程序的时候有一个防止重定义的宏,在新版的库里面添加这样的一个宏就可以消除大部分的错误了
我们先找到从定义的地方,双击错误跟踪到报错的地方我们可以看到这里就是type定义的地方,看到上面有一个“#ifndef
__STM32F10x_TYPE_H”,这个就是旧版的宏,只要将这个宏在新版的相应位置定义一下就好
到新版的库文件中,注意要消除只读的设置,从错误来看,是“s32”发生了重定义,那么就是说,新版的库应该也是有“s32”的定义,于是用搜索功能,找到“s32”定义的地方
然后在这个定义的上方补充定义这个宏就可以解决一部分的问题了,添加这样一段
#ifndef
__STM32F10x_TYPE_H//补充定义旧版的宏
#define
__STM32F10x_TYPE_H
#endif
#47-D:
incompatible
redefinition
of
macro
"SCS_BASE"
的错误解决方法也差不多,补充定义旧版宏即可解决大部分问题,这次是在core_cm3.c文件中,注意解锁

⑸ KEIL编写STM32时总是提示缺少AXF文件,这文件到底怎么得来啊

你是不是复制别人的工程文件,来学习。虽然它们可以编译通过,但运行时就会出错说在你指定的文件路径下找不到AXF文件。你必须指定它的路径。
指定它方法是:
按Alt+F7出现“options for target" 在里面选择"output"选卡,点击“select Folder objects....”选择你的AXF文件,一般它在你的复制的工程文件夹里能找到。在“Name of Executable“编辑框里填写你找到的*.AXF文件名。

⑹ KEIL用c语言编译STM32芯片数据类型无法赋值的问题

没有遇到这样的问题,一般都成功
unsigned int Var1 = (unsigned int)(float Var2);
如果这样都是0的话,那么Var2可能本身就是0,如果需要验证Var2是否本身就是0,可以用联合体的方式定义变量,然后查看一下。

⑺ stm32编译前为什么要配置keil中C/C++中的define 和include Paths

这是Keil与编译器的一个相互通信的过程,准确的来说,是编译器读取Keil的配置
ARM系列的有一些公司的库编译器,是与Keil的一些配置通信的.
比如你说的那个
Define,include
path
一般来说,我们用Keil做51或者STR710等等一些单片机的程序时候,不需要配置刚才的两个选项,为什么?
因为C51和ARM7的编译器不去读取上述的配置.
而Cortex-M3编译器,则读取上述的配置,并转换成自己的内编译器配置
比如:你在Define里面写:THIS_MY_DEF
那么,编译器在编译的时候,文件里会隐性的定义出这么一句:
#define
THIS_MY_DEF
通常,我们写Define里,都写USE_STDPERIPH_DRIVER,STM32F10X_HD这两个
然后,编译的时候,文件里会隐性定义
#define
USE_STDPERIPH_DRIVER
#define
STM32F10X_HD
而这两个宏,决定了STM32的库函数的一些配置.
如果你把那个Define文本框空闲出来,那么,编译器找不到任何配置信息,自然就出错.
如果你一定要把Define文本框空闲,那么,你就要在Stm32F10x.h等多个文件里手工添加
#define
USE_STDPERIPH_DRIVER
#define
STM32F10X_HD
过程比较繁琐,如果一旦换了芯片,整个的工程就有多处要修改,
工作量太大,且容易出错
,就不如在配置的时候操作一次那么简便

⑻ 基于keil MDK给stm32编程的问题。。。嵌入式系统开发环境的搭建

您好,一、【安装STM32库】 将下载后的stm32f10x_stdperiph_lib.zip解压后得到三个文件夹分别是:"Libraries"、"Project"、"Utilities"将这3个目录复制到"Keil uVision4"的安装目录,和目录中的文件覆盖合并。二、【新建工程】 1、打开"Keil uVision4",在Project菜单中选择新建工程,选择工程要保存的位置,在弹出的“Select Device for target”的对话框中选择使用的STM32单片机的型号如“STM32F103C8”,点确定,然后在弹出的“Copy startup code”的对话框中点选"NO".
2、在Project“Target 1”上点选右键菜单“Option for target target1中设置相关参数”在[Output]选项卡中点选“Create HEX file”,点"Select folder for objects"设置临时生成的obj文件的存放目录,当然也可以不选择;
3、在[C/C++]选项卡的"Preprocessor Sysmbols"的Define框中做如下定义:USE_STDPERIPH_DRIVER,STM32F10X_MD
其中USE_STDPERIPH_DRIVER表明要使用ST提供的库,在"system_stm32f10x.c"文件中包含的"stm32f10x.h"文件中有如下定义:
#ifdef USE_STDPERIPH_DRIVER #include "stm32f10x_conf.h"#endif在[C/C++]选项中添加的USE_STDPERIPH_DRIVER宏就是这个作用,用来包含"stm32f10x_conf.h"这个文件被称为"Library Configuration file"用来配置你需要使用到库的那些文件的,例如需要使用到GPIO就应在在这个文件中加上#include "stm32f10x_gpio.h"这个文件可以在STM32库的给出的例程中找得到(C:\Keil\ARM\Project\STM32F10x_StdPeriph_Examples)另外还需要在例程中复制"stm32f10x_it.c"和"stm32f10x_it.h"这2个文件,这2个文件时用来完成STM32中重中断服务程序的将一下三个文件复制到自己工程的user目录下供以后使用:"stm32f10x_conf.h"、"stm32f10x_it.c"、"stm32f10x_it.h"STM32F10X_MD 表明使用的是STM32F10X系列的CPU而该CPU的Flash代码密度是中等(Medium-density devices)这个和使用的CPU相关的查阅CPU的手册就可以得到。
然后在该选项卡的下方的"Include Paths"中设置include使用的路径等,如下图所示:其中.\user路径是用来保存自己定义的头文件的路径4、[Debug]选项卡选择使用"Cortex-M/R J-Link/J-Trace",然后点"Settings"按钮在新打开的对话框中选择[Flash Download]选项卡点"Add"按钮添加编程使用的Flash,在本例中选用的CPU是STM32F103C8,其Flah为Medium-density使用片上的Flash型号为"STM32F10X Med-density Flash On-chip-Flash 128K",最终点OK保存设置。5、[Utilities]选项卡中的"Use Target Device for Flash Programing"要选择和[Debug]选项卡中一样的调试器"Cortex-M/R J-Link/J-Trace";6、然后再次在左侧的"Target 1"上点选右键,在菜单中选择"Manger Components"然后在"Project components"选项卡的"Group"中新建3个组名称分别为"user"、"libs"、"cmsis"1、 分别用来保存用户自己的C文件、stm32f10x_stdperiph_lib的库、和cortex-m3的启动文件等。

users:
Keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\ system_stm32f10x.c (stm32f10x_it.c该文件定义各种中断的中断服务函数)
libs:
Keil\ARM\ Libraries\ STM32F10x_StdPeriph_Driver\src\*.*
cmsis:
Keil\ARM\ Libraries\ CMSIS\ CM3\ CoreSupport\core_cm3.c
Keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s
(该文件和CPU的Flash的代码密度相关,本例中的STM32F103C8是Medium-density故选用xxx_md.s)

⑼ 如何使keil既能编写51又能编写STM32

Keil软件,按缺省设置,先装MDK,装完后,不要做任何处理(不卸载,不改变目录);之后继续安装KeilC51软件,按缺省安装,安装完成后,你运行KEIL软件,里面就由STM32等ARM供你选择了。

⑽ 为什么用keil编译STM32的文件那么慢

  1. keil编写STM32多是C语言下的编译汇编,要和同类的C语言编译工具比较,不能和面向对象语言的程序比速度。个人认为速度不慢。

  2. 虽然keil软件对于硬件要求不高,但目前来说最好使用intel i5 3代以上,内存4g以上的硬件配置。

  3. 编译有编译文件,编译有修改的文件,和编译工程内所有文件;合理使用提高速度,另外值得注意的是修改c语言中.h文件后,与之相关的所有文件都会重新编译。

  4. 有些it公司的保密软件,与keil兼容性不好影响会严重keil编译速度(亲身经历过)。

热点内容
安卓系统怎么通话 发布:2025-03-16 00:25:13 浏览:320
数据库上t 发布:2025-03-16 00:23:31 浏览:410
编译程序实现的途径 发布:2025-03-16 00:17:07 浏览:560
app编程入门 发布:2025-03-16 00:04:20 浏览:195
插接式数据库 发布:2025-03-15 23:52:59 浏览:68
安卓从哪里设置后摄像头镜像 发布:2025-03-15 23:51:27 浏览:975
服务器电脑超频教程 发布:2025-03-15 23:50:48 浏览:979
苹果手机如何找回appid密码 发布:2025-03-15 23:48:36 浏览:408
汽车顶部黑色是什么配置 发布:2025-03-15 23:40:15 浏览:563
校考上传照片 发布:2025-03-15 23:30:02 浏览:852