1、 新建目录Project_IAR4,按照自己的顺序重新组织dll(驱动);inc、src函数库;settings,其他所有文件全部放这个新建的目录下。
2、 双击打开Project.eww,继续更改内部设置。
3、 需更改的内容列表:
位置和项目 目标 说明
ProjectEdir confignations 新建基于STM3210B的配置 编译目标和过程文件存放
ProjectOptionGeneral OptionTarget ST STM32F10x 选择芯片类型
ProjectOption C/C++ CompilerPreprocessorAdditional include directories $PROJ_DIR$
$PROJ_DIR$inc 头文件相对位置,需要包括“map/lib/type”的位置
ProjectOption C/C++ CompilerPreprocessorDefined symbols 空 空白是在Flash里面调试程序,VECT_TAB_RAM是在RAM里调试程序
ProjectOption C/C++ CompilerOptimizationsSize 最终编译一般选择High
调试可选None None,Low,Medium,High是不同的代码优化等级
ProjectOption LinkerOutput 去掉Overrride default 输出格式使用默认
ProjectOption LinkerExtra Output 打开General Extra Output去掉Overrride default 厂家要求
ProjectOption LinkerConfig 打开Overrride default
$PROJ_DIR$lnkarm_flash.xcl 使用Flash调试程序,如果需要使用RAM调试则改为lnkarm_RAM.xcl
ProjectOption DebuggerSetupDriver Third-Party Driver 使用第三方驱动连接单片机
ProjectOption Debugger Download Use flash loader 下载到flash所需的设置
ProjectOption Debugger Third-Party Driver Third-Party DriverIAR debugger driver $PROJ_DIR$ddlSTM32Driver.dll 驱动文件路径
注1:所有跟路径相关的设置需要根据实际情况编写,相对路径的编写——“$PROJ_DIR$”代表eww文件所在文件夹,“..”代表向上一层。
注2:其他设置使用库函数里面的工程文件的默认选项即可,初学不用了解太多。
4、 需要重新删除并重新添加Project下“FWLib”和“User”的所有文件,为了删减外设模块方便需要在“USER”额外添加“stm32f10x_conf.h”(不添加也可以,需要展开main.c找到它)。然后执行ProjectRebuid All,通过则设置完毕。
5、 完成以上步骤,第一个自己习惯的程序库就建立完毕了,以后可以从“stm32f10x_conf.h”中删减各种库文件,从“stm32f10x_it.c”编辑中断,从“main.c”编写得到自己的程序。最后需要将这个库打包封存,每次解压缩并修改主目录名称即可。
6、 我的程序库特点:
a) 默认兼容ST-LINK-II,IAR EWARM 4.42A,Flash调试,其他有可能需要更改设置
b) 为操作方便减少了目录的层次
c) 为学习方便使用网友汉化版2.0.2固件,主要是库函数中c代码的注释。
后面随着学习深入将在我的模板里面加入如下内容:
d) 加入必用的flash(读取优化),lib(debug),nvic(中断位置判断、开中断模板),rcc(时钟管理模板,开启外设时钟模板),gpio(管脚定义模板)的初始化代码,所有模板代码用到的时候只要去掉前面的注释“//”,根据需求填入相应值就可以了。
e) 因为自己记性不好,所以main函数中的代码做到每行注释,便于自己以后使用。
f) 集成Print_U函数简单串口收发函数代码,便于调试,改变使用Printf函数的调试习惯。
g) 集成使用systick的精确延时函数delay。
h) 集成时钟故障处理代码。
i) 集成电压监控代码。
j) 集成片上温度检测代码。
k) 逐步加入所有外设的初始化模块
一、编写程序所需的步骤
1、解压缩,改目录名称,和eww文件名,以便跟其他程序区分。
2、更改设置:在“stm32f10x_conf.h”关闭不用的外设(在其声明函数前面加注释符号“//”)。并根据外部晶振速度更改其中“HSE_Value”的数值,其单位是Hz。
3、完成各种头文件的包含(#include "xxx.h";),公共变量的声明(static 数据类型 变量名称;),子程序声明(void 函数名称(参数);)……C语言必须的前置工作。
4、改写我的程序库里面所预设的模板,再进行其他模块的初始化子程序代码的编写,并在程序代码的开始部分调用。注意:必须记住所有外设的使用需要考虑4个问题:
a) 开时钟RCC(在RCC初始化中);
b) 自身初始化;
c) 相关管脚配置(在GPIO初始化中);
d) 是否使用中断(在NVIC初始化中)
5、编写main.c中的主要代码和各种子函数。
6、在“stm32f10x_it.c”填写各种中断所需的执行代码,如果用不到中断的简单程序则不用编写此文件。
7、编译生成 “bin”的方法:ProjectOption LinkerOutputFormat,里面选择“Other”,在下面的“Output”选 “raw-binary”生成bin。
8、编译生成“hex”的方法:ProjectOption LinkerOutputFormat,里面选择“Other”,在下面的“Output”选“intel-extended”,生成a79直接改名成为hex或者选中上面的“Output Flie”在“Overrride default”项目里面改扩展名为hex。
使用软件界面的Debug烧写并按钮调试程序。注意,ST-Link-II是直接将程序烧写进Flash进行调试,而不是使用RAM的方式。
关键字:STM32 学前班教程 建立模板
引用地址:
STM32学前班教程之四:打好基础建立模板
推荐阅读最新更新时间:2024-03-16 14:31
stm32 待机模式
低功耗模式 降低系统时钟速度 不使用APBx和AHB外设时,将对应的外设时钟关闭 睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行) 停止模式(所有的时钟都已停止) 待机模式(1.8V内核电源关闭) 待机模式配置步骤 1.使能电源时钟 2.设置WKUP引脚为唤醒源 3.进入待机模式 举例 void WKUP_init() { RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能电源时钟 PWR_WakeUpPinCmd(ENABLE); //设置WKUP引脚为唤醒源
[单片机]
STM32GPIO的八种输入输出模式
上拉电阻:把不确定的信号通过电阻连接到高电平,电信号初始化为高电平。 下拉电阻:把不确定的信号通过电阻连接到低电平,电信号初始化为低电平。 输入 1.上拉输入:输入信号通过上拉电阻被初始化为高电平,再通过TTL施密特触发器从模拟信号9V、3.3V、1.9V转为数字信号0、1后存入输入寄存器中。 2.下拉输入:同上拉输入一样,区别只在通过下拉电阻初始化为低电平。 3.浮空输入:即信号输入既不连接上拉也不连接下拉,输入信号电压值不确定,通过TTL施密特触发器从模拟信号9V、3.3V、1.9V转为数字信号0、1后存入输入寄存器中。通常用于IIC、串口USART中。 4.模拟输入:不通过上下拉电阻,也不通过TTL施密特
[单片机]
STM32 AD C单次转换模式 连续转换模式 扫描模式
举例 用ADC1 规则通道的顺序为CH0,CH1,CH2,CH3, 不启动SCAN模式,在单次转换模式下: 启动ADC1,则 1.开始转换CH1(ADC_SQR的第一通道) 转换完成后停止,等待ADC的下一次启动,继续从第一步开始转换 不启动SCAN模式,在单次连续转换模式下: 启动ADC1,则 1.开始转换CH0(ADC_SQR的第一通道) 转换完成后回到第一步。 启动SCAN模式,在单次转换模式下: 启动ADC1,则 1.开始转换CH0、 2.转换完成后自动开始转换CH1 3.转换完成后自动开始转换CH2 4.转换完成后自动开始转换CH3 5.转换完成后停止,等待ADC的下一次启动下一次ADC启动后从第一步开始转换 启动S
[单片机]
STM32学习笔记之RTC(实时时钟)和BKP(备份寄存器)
RTC: RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。 RCC_BDCR:备份域控制寄存器。其LSEON、LSEBYP、RTCSEL和RTCEN位处于备份域,在复位后处于写保护状态,只有在电源控制寄存器(PWR_CR)中的DBP位置 1 后才能对这些位进行改动;这些位只能由备份域复位清除。 备份域复位:软件复位,RCC_BDCR 寄存器 BDRST位置1产生; 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。 系统复位后,对后备寄存器和RTC的访问被禁止,执行以下操作将使能对后备寄存器和RTC的访
[单片机]
STM32定时器所支持的三种计数模式及计数过程
STM32常规定时器主要包括基本定时器、通用定时器和高级定时器。不论哪一类定时器,都有个共同的计数定时单元,我们把它称之为时基单元。 该单元主要由三部分组成: 分频模块、计数模块、自动重装载模块。 分频模块用来对外来的计数时钟进行分频,这里有个分频计数器,通过它来实现对时钟的分频功能。与之对应的有个分频器寄存器TIMx_PSC,用来配置和存放分频比、分频系数。 计数模块用来对来自分频器输出的计数脉冲进行计数。相应的这里有个寄存器—计数器寄存器TIMx_CNT,为了把该计数器跟别的计数器区别开来,不妨称它为核心计数器。 自动重装载模块用来配合计数器溢出,当计数器溢出时为之赋予初始计数值的功能单元。与之相应的有个自动重装
[单片机]
STM32入门学习笔记之基础定时器实验(下)
7.2.5 状态 寄存器 : TI Mx_SR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - CC4OF CC3OF CC2OF CC1OF - TIF - CC4IF CC3IF CC2IF CC1IF UIF Bit 12:捕获/比较4重复捕获标记 0:无重复捕获产生 1:当计数器的值捕获到TIMx_CCR4寄存器时,CC4IF的状态已经为1 Bit 11:捕获/比较3重复捕获标记 0:无重复捕获产生 1:当计数器的值捕获到TIMx_CCR3寄存器时,CC3IF的状态已经为1 Bit 10:捕获/比较2重复捕获标记 0:无重复捕获产生 1:当
[单片机]
STM32的IAP方案
几乎所有的同类书籍都介绍综合性的应用示例如 万年历 + 温度显示 + 闹钟响铃 + 计时表 这样的一个实时时钟范例或 STM32 + 音频解码 + 大容量存储方案 这样的MP3播放器范例。这些综合性实例的目的在于引领读者进行综合性实验,达到把单片机的基础模块整合运用的目的。这些实例普遍存在一种共同点,即 练手 意义要大于 实用 的意义。本文将讲述一个STM32的综合性应用示例,该示例将涉及到STM32微控制器的时钟系统、GPIO、定时器、中断系统、异步串口以及内置可编程flash等设备的应用,作为一个综合性实验的同时还具有很强的 实用 意义。这个示例就是STM32的IAP方案。 IAP,全称是 In-Application Pro
[单片机]
STM32 x 翌控科技 x 米尔电子 | STM32MP135开放式高实时高性能PLC控制器解决方案发布
01前言 随着工业数字化进程加速与IT/OT深入融合,不断增加的OT核心数据已经逐步成为工业自动化行业的核心资产,而OT层数据具备高实时、高精度、冗余度高、数据量大等等特点,如何获取更加精准的OT数据对数字化进程起到至关重要的作用,同时随着国内工业控制系统逐步进入中高端应用,更加精准的控制至关重要,因此工业控制系统高实时高性能需求尤其突出。 面对以上挑战,合作伙伴翌控科技基于米尔STM32MP135开发板发布开放式高实时高性能PLC控制器解决方案,将高精准数据采集、预处理、存储、通信与高实时控制融为一体,为控制系统迈向完全数字化中高端控制提供一个非常好的选择。 02STM32MP135处理器简介 STM32MP1
[嵌入式]