‘壹’ keil5软件stm32_eval错误
设置一下就可以。
找到位置后,首先修改左下角的CPUDLL和DialogDLL,CPUDLL:SARMCM3.DLL。DialogDLL:DARMSTM.DLL。Dialog后的Parameter填写你自己设置的芯片型号,注意只用填前11位编号,CPUDLL中不变。右侧和左侧的内容保持一致即可。
‘贰’ 用keil5 STM32F107系列芯片编译一个指令时提示错误为 A1105E: Area directive missing 怎么解决
STM32调试过程中常见的问题及解决方法 一、 在“Debug选项卡”下设置好仿真器的类型后,下载程序时却提示“No ULINK Device found.”
解决办法: Keil MDK默认使用ULINK仿真器下载程序,在“Project --->Option for Target 'xxx' --->Utilities选项卡”下把编程所使用的仿真器改为相应的类型即可。
二、 编译工程时提示如下信息:
main.axf: Error: L6218E: Undefined symbol __BASEPRICONFIG (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __GetBASEPRI (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __RESETFAULTMASK (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __RESETPRIMASK (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __SETFAULTMASK (referred from stm32f10x_nvic.o).
main.axf: Error: L6218E: Undefined symbol __SETPRIMASK (referred from stm32f10x_nvic.o).
解决办法:工程缺少“cortexm3_macro.s”文件,把cortexm3_macro.s和STM3210x.s全部添加到工程即可。
三、调试器不能连接到STM32的问题与解决办法
很多人都碰到过调试器不能连接到STM32的问题,不管是IAR的J-Link还是Keil的ULink,或者是ST的ST-Link。出现这个问题时,调试软件会提示不能建立与Cortex-M3的连接,或提示不能下载程序,或提示找不到要调试的设备等。
这样的问题都是发生在调试那些可以在CPU不干预的时候自动运行的模块、或在调试低功耗模式的程序的时候。所谓“可以在CPU不干预的时候自动运行的模块”包括:DMA、定时器、连续转换模式下的ADC、看门狗等模块。
--------------------------------------------------------------------------------
这个问题的根源是:
1. 调试器需要在RAM内执行一段程序,对Flash进行擦写操作,如果不停止这些自动运行的模块,它们会干扰程序在RAM中的执行,致使下载失败。比如DMA模块被配置为不停地拷贝一段数据区,而调试器刚好需要使用DMA数据传输的目标区域,这时DMA的操作将会与调试器的操作发生冲突。再比如,如果启动了看门狗而没有执行硬件复位,则在下次调试器需要下载程序时,看门狗超时将触发芯片复位,导致下载操作失败。
2. 低功耗是通过停止CPU的时钟而实现,JTAG调试是通过与CPU的通信实现,停止了CPU的时钟致使调试器会失去与CPU的通信。
‘叁’ 在keil5新建stm32工程时遇到的问题
可能是你文件覆盖的时候没有清除原来的输出文件,一般是把输出文件全部删除,然后点开
Target->output,把里面的Create Batch File的√去掉,保存后重新编译就可以了
‘肆’ 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程序,其中编译有个错误
调用时,你作为char使用,而你定义的时候是const
void,所以你看看参数类型有没有问题,或函数调用是不是错误赋值了。
‘陆’ 求助,keil 5无法加入stm32f4XX的库
Keil μVision3 有两个版本,Keil_C51 和keil_ARM (也叫RV MDK),你把两个都装了,就能同时编译stm32和单片机51了。现在用的都是Keil μVision4了啊!
‘柒’ Keil5在编译stm32工程的时候出现下面的情况,怎么解决
软件和系统的兼容性问题,要么重装keil5。要么换系统或者使用keil4。
‘捌’ 用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
‘玖’ 问一个keil5的编译错误的问题
提示指出了4个未定义的符号,在文件中无法识别到。
例如 stm32f4xx_it 中用到了 EXTI_ClearITPendingBit,但是从 stm32f4xx_it 这个模块的角度而言,它查不到你在哪里定义了这个符号,无法判断这个符号究竟是什么,也就无法进行连接。
一般而言都是包含关系有错误,或工程的搜寻路径配置有问题。
‘拾’ WIN8系统安装STM32 ST-LINK Utility v3.9.0,KEIL无法编译构建,烧录软件也不能连接HEX文件
1、插上STlink,检查下你的设备管理器里面有没有驱动。
2、没显示驱动确认下线什么是不是有问题,拔插下试试。驱动安装了但是不是stlink驱动就安装下对应的驱动。一半utility会安装的
3、stlink utility 和 keil 是不能同时连接stlink 的,一个连上后,另一个连会报错
4、有问题再说