stm32编译
1. STM32程序编译出现错误,请各位帮忙
STM32程序编译出现错误,是设置错误造成的,解决方法如下:
1、首先打开STM32 ST-LINK Utility,依次选择“File ->Open File...”或者按快捷键“CTRL + O”准备打开一个烧录文件。
2. stm32编译时出错问题解决
对于比较小的程序,一般只有一个c文件和一个头文件,全局变量我们通常会直接定义在c文件中,在程序之前加int i定义。如果要在头文件中定义有以下两种方法:用extern来声明:extern int i;这一句只是对变量 i 进行声明,在c文件的程序之前必须加上int i进行定义。extern int i=0;这一句声明和定义都做了。 对于大一点的程序,有很多c文件和头文件,这个时候全局变量就必须在头文件中声明(不需要初始化),然后在一个c文件中定义(该初始化的要初始化)。如果在头文件中定义,则编译的时候会出现重复定义的错误。如果只有头文件中声明就会出现没有定义有警告。 *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: K MODULE: 222.obj (222)出现上述错误则是因为变量k重复定义,把你的头文件中的变量定义前加extern(只是变量声明不用初始化),再在某一个你要调用该变量的c文件的程序之前再定义(注意第一个调用的c文件要负责附带初始化该变量,其他调用的c文件就不需要初始化过程啦)一下就可以了。另外: 下次最好能把程序贴出来stm32编译时出错问题解决
3. STM32编译出错
error: #137: expression must be a modifiable lvalue
描述:表达式必须是一个可以修改的左值
主要出现在这种现象
:a=NUM;
NUM是一个数值或表达式
,a为一个变量
但a被定义为像const这种不可更改的类型导致NUM不能赋值给变量
解决方法要么放弃赋值要么修改变量属性
4. 如何用arino的ide编译stm32
用arino的ide编译stm32方法:
1,先说说arino是个什么东西
arino说白了就是有人写了一个库把芯片寄存器还有一些外围的部件抽象出来了,使用arino就像是在pc上写模拟器一样,不需要我们写任何硬件相关代码
2,stm32如果要像arino的avr系列那样控制的话,也需要有一个库能把他抽象出来,把他的一些寄存器封装起来,能够直接调用,恩嗯,stm32的库开发就是这样的,不过还是要配置一些寄存器(为了加强控制能力)。
所以如果要把你在arino上的抽象搬到stm32上去,理论上是没有问题的,不过需要注意版本是不是一样的,stm32的型号有很多种,不同的型号外围部件的操作方式会有些变化,所以一般对应一个版本定制一个版本库
5. STM32编译错误,初学者求指点
原因:
出现上述错误则是因为变量k重复定义,把你的头文件中的变量定义前加extern(只是变量声明不用初始化),再在某一个你要调用该变量的c文件的程序之前再定义(注意第一个调用的c文件要负责附带初始化该变量,其他调用的c文件就不需要初始化过程啦)一下就可以了。
6. kiel tutinstm32文件能编译吗
可以。
STM32是ARM7核,而KEIL是ARM旗下的,KEIL只是一个开发环境,支持什_还需要下载相应的编译器,你原来如果是学51的,肯定有C51编译器,但是你需要去官网下载KEIL MDK就是所说的RVMDK,就是ARM的编译器,包含STM32,然后安装,然后看着教程打开KEIL选择相应的芯片来建立工程就行了,不过需要破解。
一般在STM32工程使用Keil编译之后,keil的build output窗口中会出现如图所示的输出信息,其中会显示code_笮。_O-data、RW-data、ZI-data大小。ARM程序的组成(ARM系统中正在执行的程序,而非保存在ROM中的BIN映像文件,请注意区别):一个ARM程序包含3个部分:RO,RW和ZI,RO是程序中的指令和常量;RW是程序中已经初始化的变量;ZI是程序中未经初始化的变量;以上3点可以理解为:RO就是readonly,RW就是read/write,ZI就是zeroARM映像文件的组成:所谓的ARM映像文件就是烧录到ROM中的BIN文件,也称为Image文件,以下用Image文件来替代。Image文件包含了RO和RW数据,之所以Image文件不包含ZI数据,那是因为ZI数据都是0,没必要包含,运行之前将ZI数据数据所在的区域清零即可,包含进去反而浪费存储空间补充一个问题:Q:为什么Image必须O,RW?A:因为RO中的指令和常量以及RW中初始化过的变量是不能像ZI那样无中生有的。
7. stm32 用什么编译器好
应该IAR好很多。
同样的ucosII本家的移植代码Micrium-ST-uCOS-II-LCD-STM32,
用里面自带的keil工程和IAR工程编译,
都设置为最大尺寸优化,
keil的编译结果:
Program Size: Code=27562 RO-data=4870 RW-data=196 ZI-data=9240
FLASF占用:Code+RO-data+RW-data = 27562 +4870 +196 = 32628字节
RAM占用:RW-data+ZI-data = 196 + 9240 = 9436字节
IAR的编译结果:
13 730 bytes of readonly code memory
5 618 bytes of readonly data memory
8 636 bytes of readwrite data memory
FLASF占用:13 730 + 5 618 = 19348字节
RAM占用:8 636字节
KEIL比IAR占用FLASH多:32628- 19348 = 13280字节
8. stm32编译时出现error: #147-D的错误,该怎么解决(keill环境下)
keill环境下,使用stm32编译时出现error: #147-D的错误的解决方法:
1、右键我的电脑-管理-本地用户和组-用户-把里面你的中文用户名改成英文。
3、把MDK安装在英文目录。
STM32是基于ARM® Cortex® M 处理器内核的 32位闪存微控制器,为MCU用户开辟了一个全新的自由开发空间,并提供了各种易于上手的软硬件辅助工具。
STM32 MCU融高性能、实时性、数字信号处理、低功耗、低电压于一身,同时保持高集成度和开发简易的特点。业内最强大的产品阵容,基于工业标准的处理器,大量的软硬件开发工具,让STM32单片机成为各类中小项目和完整平台解决方案的理想选择。按内核架构分为不同产品系列。
STM32中文官网:
2013年上线至今,为中国地区用户提供快捷的途径访问、下载关于ST MCU的全部产品信息和技术文档,同时也是一个和意法半导体直接沟通关于微控制器的平台。
用户可以通过网站了解最新的32位Cortex-M单片机STM32及8位STM8单片机产品信息,下载热门的ST MCU设计资源,涵盖完整的芯片文档、固件和软件、评估开发板、开发工具及本地化的中文译文、FAE实战经验、STM32培训课件与视频等资料。
此外,用户还可以直接报名参加STM32全国研讨会、STM32峰会、技术培训等。
9. STM32原子的程序编译时出现问题求解答
首先下载ST-LINK的驱动:,这是网络云下载地址。解压后执行dpinst_x86.exe,若不能用卸载后再执行dpinst_amd64.exe。完成后如图所示。把ST-Link通过usb连接到电脑,然后打开设备管理器,可以看到会多出一个设备将图中的ST-LINK连接到开发板后,再通过usb接口和电脑相连接,之后通过电源线给开发板供电。打开已经编写好的程序,编译一遍确保程序可用。(默认前提:MDK已经下载安装,且添加了stm32的的支持包)根据图中步骤,配置MDK,注意不要错选漏选。点击“SETTING”后出现图中所示,按照途中信息配置(也可根据自己的需求配置)点击“flashdownload”,勾选以框中3项,根据自己使用的stm32芯片配置第二个框中的芯片,确定回到上一界面。(默认前提:MDK已经下载安装,且添加了stm32的的支持包)选择“Utilities”,勾选图中选项,完成后点击确定。配置完成后,确保开发板开启且正常使用,点击“load”下载程序至开发板。完成后会有相应提示。
10. stm32编译问题
在头文件usart.h里面是没有定义它的,在不完全手册里提到过,上面是这样写的
“这里需要注意一点,因为我们使用到了串口的中断接收,必须在 usart.h 里面义EN_USART1_RX 。该函数才会配置中断使能,以及开启串口 1 的 NVIC 中断。这里我们把串口 1 中断放在组 2,优先级设置为组 2 里面的最低。”
在原头文件usart.h中是这样写的"//#define EN_USART1_RX //使能串口1接收"他以备注解释的形式出现的,要把前面的“//”给去掉,“symbol usart_RX BUF”就呗定义了