优秀的编程知识分享平台

网站首页 > 技术文章 正文

嵌入式学习总结5(嵌入式课程总结与体会)

nanyue 2024-10-15 11:40:12 技术文章 4 ℃

自己学习总结用,有些乱,勿怪

1、AD软件安装后启动的一些错误

本来用的好好的,昨天打开AD突然出现
Exception EAccessViolation in module DXP.EXE at 001BBC17.Access violation at address 005BBC17 in module'DXP.EXE'.Read of address 00000034.

Access Violation(非法访问),General Protection Fault(一般保护性错误)或者Invalid Page Fault(无效页面错误),虽然说法不一样,但本质上总是由同一种错误引起的。Access Violation常常在计算机用户运行的程序试图存取未被指定使用的存储区时遇到。
Access violation at address <十六进制值>
in module <应用程序名>
Read of address <十六进制值>
“Access violation at address 00000000.Read of adress 00000000.意思是:在地址 00000000 存取违反,禁止对地址00000000的读取
出现access violation at address 00000000. read of address 00000000.原因是:没有运行服务端软件,所以客户机会提示"Access violation at address 00000000, read of address 0000000",开启服务端程序或检查网线即可解决。
另外,可能出现这个问题的原因是因为你是在WINRAR的窗口中运行程序,而程序又找不到主要文件引起的。
解决方法:)~~
尝试用兼容方式运行该程序.右键点击图标——属性——兼容型——选中“以兼容方式运行该程序”——下面的选框中可以选择以95、98、NT4.0或2000模式来运行。
2、解决AD13不能复制原理图的问题

先看看能不能添加本地打印机,要是无法添加打印机,在桌面选中“我的电脑”,鼠标右键选择“管理”;

在“管理”窗口中,选取“服务和应用程序”扩展项目下的“服务”选项,在右侧出现系统服务列表中找到“Print Spooler”服务,双击进入“Print Spooler”服务设置;

在“Print Spooler”服务设置窗口中,将“启动类型”设置为“自动”,点击“启动”按钮;

此时系统会尝试启动该服务;

当服务启动成功后,“服务状态”会显示为“已启动”,重新进行添加或是使用打印机的其它操作。

如果复制还出错:

添加本地打印机:开始》》设备和打印机》》添加打印机》》创建新端口》》下一步》》输入test》》厂商选Microsoft,打印机选Microsoft XPS Document Writer

或者去下载一个dopdf

3、keil5 手动添加pack( STM32F10x为例 )

从http://www.keil.com/dd2/Pack/#/eula-container上下载找到自己要下载的standalone的pack文件后 (版本限制,低版本的 MDK 不支持高版本的pack,选择对应的版本 pack下载) 点击下载pack运行即可完成pack手动导入,选择file/Device Database 即可看pack是否导入成功。

确认pack导入成功:打开MDK 选择file/Device Database 即可看pack是否导入成功。

4、固件库的下载与添加

在用Keil软件进行代码编写时,第一步需要选择主芯片,如果你的Keil软件里面没有安装对应主芯片的固件库,那么将无法选择对应主芯片,以及导致后面程序无法编译成功。这时需要在网上下载对应的固件库,下载固件库最好的选择是在Keil官网上下载正式的固件库。具体操作如下:(当然你可以略过下面的操作,直接进入到网址:https://www.keil.com/dd2/,选择自己想要的芯片固件库包)

下面以STM32F103C8主芯片固件库为例

第一步,打开Keil官网首页http://www.keil.com/,①左键点击Products;②左键点击Device List。

第二步,③下拉到底部找到STMicroelectronics,左键点击。

第三步,①左键点击STMicroelectronics;②左键点击STM32F1 Series;③STM32F103;④选中STM32F103C8。

第四步,①点击Download

第五步,创建工程添加固件库,新建文件夹,里面包含四个空的文件夹

第六步,CMSIS中需要添加的文件,用两幅图表示,包含具体路径,一共5个函数

第七步,Startup需要添加的函数有8个,如图

第八步,Lib下需要添加2个文件夹,inc与src

第九步,User文件夹下包含4个函数

文件夹函数添加完成以后,需要在KIEL 5中进行添加

打开KIEL软件新建一个文件路径在我们刚刚建立的文件夹中

保存后,选择芯片的类型,我的芯片是STM32VCT6,即选择STM32VC即可

完成后在,界面点击三个小方块的按钮,弹出对话框

然后新建四个相同文件夹,再将我们刚刚创建的文件夹中的函数进行添加,其中需要注意的是Stratup中是汇编文件,添加的时候要选择所有类型,而Lib文件夹下选择SRC 文件夹内的文件即可

再选择魔术棒类型的按钮,进行配置

依次如下进行选择

根据设备存储容量,对define处填写USE_STDPERIPH_DRIVER, STM32F10X_HD,这是根据内核存储容量大小来的,可参见博文网址:https://blog.csdn.net/qq_18671205/article/details/102462921

接下来再打开箭头所指处

再将我们自己的文件夹下文件添加到此处

最后进行编译,再打开main.C函数,将其内容删除。

最后编译中出现了报错,报错如下:

需要删除启动文件Stratup中的一部分只保留startup_stm32f10x_hd.s

5、STM32F407芯片的安装

1、下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。

打开官方固件库包,定位到我们之前准备好的固件库包的目录:

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver 下面,将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 FWLib 文件夹下面。src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件,您不妨打开这两个文件目录过目一下里面的文件,每个外设对应一个.c 文件和一个.h 头文件。如下图:

2、下面我们要将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。打开官方固件库包,定位到目录

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 下面,将文件 startup_stm32f40_41xxx.s 复制到 CORE 目录下面。然后定位到目录\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ ,将里面 的 四 个 头文件 :core_cm4.h、core_cm4_simd.h、core_cmFunc.h 以及 core_cmInstr.h 同样复制到 CORE 目录下面。现在看看我们的 CORE 文件夹下面的文件,如下图

3接下来我们要复制工程模板需要的一些其他头文件和源文件到我们工程。首先定位到目录:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include 将里面的 2 个头文件 stm32f4xx.h 和 system_stm32f4xx.h 复制到 USER 目录之下。这两个头文件是STM32F4 工程非常关键的两个头文件。后面我们讲解相关知识的时候会给大家详细讲解。然后进入目录\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates ,将目录下面的 5 个文件 main.c , stm32f4xx_conf.h , stm32f4xx_it.c , stm32f4xx_it.h ,system_stm32f4xx.c 复制到 USER 目录下面。请按下图 3.3.2.10 选中 5 个文件然后复制:

相关文件复制到 USER 目录之后 USER 目录文件如下图

4、前面 7 个步骤,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Project Items,如下图:

5、Project Targets 一栏,我们将 Target 名字修改为 Template,然后在 Groups 一栏删掉一个 Source Group1,建立三个 Groups:USER,CORE,FWLIB。然后点击 OK,可以看到我们的 Target 名字以及 Groups 情况如下图:

10、下面我们往 Group 里面添加我们需要的文件。我们按照步骤 9 的方法, 右键点击点击Tempate,选择 Manage Project Items.然后选择需要添加文件的 Group,这里第一步我们选择 FWLIB,然后点击右边的 Add Files,定位到我们刚才建立的目录\FWLIB\src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件,如下图

这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。例如我只用 GPIO,我可以只用添加 stm32f4xx_gpio.c 而其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选择。

这里有个文件 stm32f4xx_fmc.c 比较特殊。这个文件是 STM32F42 和 STM32F43 系列才用到,所以我们这里要把它删掉(注意是 stm32f4xx_fmc.c 要删掉,不要删掉 stm32f4xx_fsmc.c)。如下图

11、用同样的方法,将 Groups 定位到 CORE 和 USER 下面,添加需要的文件。这里我们的 CORE 下面需要添加的文件为 startup_stm32f40_41xxx.s(注意,默认添加的时候文件类型为.c,也就是添加 startup_stm32f40_41xxx.s 启动文件的时候,你需要选择文件类型为 All files才能看得到这个文件 ),USER 目录下面需要添加的文件为 main.c,stm32f4xx_it.c,system_stm32f4xx.c。 这样我们需要添加的文件已经添加到我们的工程中去了,最后点击 OK,回到工程主界面。操作过程如下图

12、接下来我们要在 MDK 里面设置头文件存放路径。也就是告诉 MDK 到那些目录下面去寻找包含了的头文件。这一步骤非常重要。如果没有设置头文件路径,那么工程会出现报错头文件路径找不到。具体操作如下图,5 步之后添加相应的头文件路径。

这里我们需要添加的头文件路径包括:\CORE, \USER\以及\FWLIB\inc。这里大家务必要仔细,固件库存放的头文件子目录是\FWLIB\inc,不是 FWLIB\src。很多朋友都是这里弄错导致报很多奇怪的错误。添加完成之后如下图

13、接下来对于 STM32F40 系列的工程,还需要添加一个全局宏定义标识符。添加方法是点击魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。注意这里是两个标识符 STM32F40_41xxx和 USE_STDPERIPH_DRIVER,他们之间是用逗号隔开的,请大家注意。这个字符串大家可以直接打开我们光盘的新建好的工程模板,从里面复制。模板存放目录为:4,程序源码\标准例程-库函数版本\实验 0 Template 工程模板

14、接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选择目录为我们上面新建的 OBJ 目录。同时将下方的三个选项框都勾上,操作过程如下图

这里说明一下步骤 4 的意义。Create HEX File 选项选上是要求编译之后生成 HEX 文件。Browse Information 选项选上是方便我们查看工程中的一些函数变量定义

Tags:

最近发表
标签列表