再造STM32---第四部分:新建工程---寄存器版

发布者:美丽的1号最新更新时间:2019-09-29 来源: eefocus关键字:STM32  新建工程  寄存器版 手机看文章 扫描二维码
随时随地手机看文章

4.1 新建工程:


4.1.1 新建本地工程文件夹:

 

       为了工程目录更加清晰,我们在本地电脑上新建 1 个文件夹用于存放整个工程,如命名为“LED”,然后在该目录下新建 2 个文件夹,具体如下:

表格 8 工程目录文件夹清单

表格 9 工程目录文件夹内容清单

4.1.2 新建工程:


打开 KEIL5,新建一个工程,工程名根据喜好命名,我这里取 LED-REG,直接保存在 LED 文件夹下。

1. 选择 CPU 型号:


       这个根据你开发板使用的 CPU 具体的型号来选择, 我的F429选STM32F429IGT 型号。如果这里没有出现你想要的 CPU 型号,或者一个型号都没有,那么肯定是你的 KEIL5 没有添加 device 库, KEIL5 不像 KEIL4 那样自带了很多 MCU 的型号,KEIL5 需要自己添加,关于如何添加请参考《如何安装 KEIL5》这一章。

2. 在线添加库文件:


寄存器控制 STM32 时我们不需要在线添加库文件,这里我们点击关掉。

3. 添加文件:

 

       在新建的工程中添加文件,文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可。我们对要添加的三个文件说明如下:


startup_stm32f429_439xx.s

       启动文件,系统上电后第一个运行的程序,由汇编编写, C 编程用的比较少,可暂时不管,这个文件从固件库里面拷贝而来,由官方提供。文件在这个目录: STM32F429固件库STM32F4xx_DSP_StdPeriph_Lib_V1.8.0LibrariesCMSISDeviceSTSTM32F4xxSourceTemplatesarm


stm32f4xx.h

      用户手动新建,用于存放寄存器映射的代码,暂时为空。


main.c

      用户手动新建,用于存放 main 函数,暂时为空。

4. 配置魔术棒选项卡:


这一步的配置工作很重要,很多人串口用不了 printf 函数,编译有问题,下载有问题,都是这个步骤的配置出了错。


        a) Target 中选中微库“Use MicroLib”,为的是在日后编写串口驱动的时候可以使用 printf 函数。而且有些应用中如果用了 STM32 的浮点运算单元 FPU,一定要同时开微库,不然有时会出现各种奇怪的现象。 FPU 的开关选项在微库配置选项下方的“Use Single Precision”中,默认是开的。

        b) Output 选项卡中把输出文件夹定位到我们工程目录下的 output 文件夹,如果想在编译的过程中生成 hex 文件,那么那 Create HEX File 选项勾上。

        c) 在 Listing 选项卡中把输出文件夹定位到我们工程目录下的 Listing 文件夹。


5. 下载器配置:


       在仿真器连接好电脑和开发板且开发板供电正常的情况下,打开编译软件 KEIL,在魔术棒选项卡里面选择仿真器的型号,具体过程看图示:

Debug 选项配置

Utilities 选项配置

Debug Settings 选项配置

        选择目标板,具体选择多大的 FLASH 要根据板子上的芯片型号决定。 F429选 1M。这里面有个小技巧就是把 Reset and Run 也勾选上,这样程序下载完之后就会自动运行,否则需要手动复位。擦除的 FLASH 大小选择 Sectors 即可,不要选择 Full Chip,不然下载会比较慢。

4.1 下载程序:


如果前面步骤都成功了,接下来就可以把编译好的程序下载到开发板上运行。下载程序不需要其他额外的软件,直接点击 KEIL 中的 LOAD 按钮即可。

       程序下载后, Build Output 选项卡如果打印出 Application running…则表示程序下载成功。如果没有出现实验现象,按复位键试试。当然,这只是一个工程模版,我们还没写程序,开发板不会有任何现象。


       至此,一个新的工程模版新建完毕。

关键字:STM32  新建工程  寄存器版 引用地址:再造STM32---第四部分:新建工程---寄存器版

上一篇:再造STM32---第五部分:使用寄存器点亮 LED 灯
下一篇:再造STM32---第三部分:什么是寄存器?

推荐阅读最新更新时间:2024-11-03 15:44

STM32学习笔记(7) 超声波HSR04模块详解
一 超声波硬件详解 硬件参数 二 工作原理 采用(IO触发测距,至少给10us的高电平) 模块自动发送8个40kHz的方波,自动检测是否有信号返回 有信号返回时,通过IO输出一高电平、高电平持续时间就是超声波从发射到返回的时间 三 代码编写 程序流程图 GPIO结构体的初始化 EXTI外部中断结构体的初始化 NVIC中断结构体的初始化 TimeBase时基结构体的初始化 超声波Trig发送信号 外部中断服务函数接收返回信号并计算出距离(全局变量) 关键代码 /** * 函数名:HSR04_Init() * 功能:超声波的初始化 * 引脚:PB5(Trig) | PB4(Echo) * 占用的内设资源
[单片机]
<font color='red'>STM32</font>学习笔记(7) 超声波HSR04模块详解
中容量STM32处理器启动代码的理解
今天要介绍一下STM32的启动代码,我这里使用的是中容量的STM32f103c8t6,对应的启动文件就是startup_stm32f10x_md.s,我这里启动文件版本是V3.6.2 不多说废话,先上我注释过的源码: /** ****************************************************************************** * @file startup_stm32f10x_md.s * @author MCD Application Team * @version V3.6.2 * @date 28-February-2013 * @b
[单片机]
STM32通用定时器---基本定时学习
1.STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8个定时器。 定时器 计数器分辨率 计数器类型 预分频系数 产生DMA请求 捕获/比较通道 互补输出 TIM1 TIM8 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 有 TIM2 TIM3 TIM4 TIM5 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 没有 TIM6 TI
[单片机]
STM32开关总中断
在 STM32/Cortex-M3 中是通过改变 CPU 的当前优先级来允许或禁止中断。 PRIMASK 位:只允许 NMI 和 hard fault 异常,其他中断/ 异常都被屏蔽(当前 CPU 优先级=0)。 FAULTMASK 位:只允许 NMI,其他所有中断/异常都被屏蔽(当前 CPU 优先级=-1)。 在 STM32 固件库中(stm32f10x_nvic.c 和 stm32f10x_nvic.h) 定义了四个函数操作 PRIMASK 位和 FAULTMASK 位,改变 CPU 的当前优先级,从而达到控制所有中断的目的。 下面两个函数等效于关闭总中断: void NVIC_SETPRIMASK(void);
[单片机]
STM32入门系列-使用库函数点亮LED软硬件分析
电路图分析 首先找来单片机的原理图,根据原理图进行相关的设计工作。 例如在上图中相同网络标号表示它们是连接在一起的,因此D1发光二极管阴极是连接在STM32的PC0管脚上,D2指示灯阴极连接在PC1管脚上,其他LED管脚以此类推。如果要使D1指示灯亮,只需要控制PC0管脚输出低电平, 如果要使D1指示灯灭,只需控制PC0输出高电平。如果你们使用的是其他板子,连接LED的管脚和极性不一样,那么只需要在程序中修改对应的GPIO管脚和输出电平状态即可,原理是一样的。 要点亮D1发光二极管,也就是让STM32的PC0管脚输出一个低电平。 库函数支持文件 如果采用的是库函数开发,需要复制创建好的库函数模板,在此模板上进行程序开发
[单片机]
<font color='red'>STM32</font>入门系列-使用库函数点亮LED软硬件分析
stm32专题十八:SPI框图及通讯过程
stm32的SPI外设: 1 通讯引脚和结构框图 不同的SPI设备(由于挂载在不同的总线上),通讯速率不同 结构框图: 2 通讯速度 由控制寄存器CR1的BR 位来控制,主要就是对Fpclk(APB1时钟为72M,APB2时钟为36M)进行分频。 3 数据控制逻辑 SPI的MOSI及MISO都连接到数据移位寄存器上,数据移位寄存器的数据来源来源于接收缓冲区及发送缓冲区。 通过写SPI的“数据寄存器DR”把数据填充到发送缓冲区中。 通过读“数据寄存器DR”,可以获取接收缓冲区中的内容。 其中数据帧长度可以通过“控制寄存器CR1”的“DFF位”配置成8位及16位 模式;配置“LSBFIRST位”可选
[单片机]
<font color='red'>stm32</font>专题十八:SPI框图及通讯过程
STM32单片机电源端并联电容的重要性
如图,笔者用TQFP(32-100PIN)0.55MM转直插的转接板焊了一个STM32F207VET6的板子。板上引出了SWD调试接口(仅占用PA13和PA14),USART1串口引脚,插了一个触摸传感器和蜂鸣器模块。 所要实现的功能是:用手触碰一下触摸传感器后,蜂鸣器响一声。 接触摸传感器模块输出信号接到PA0口上。在没有接电源电容之前,每一次单片机复位(无论是软件复位还是按下复位键复位),PA0上会自动产生一个异常的高电平,要等上将近10秒才会回到低电平,然后触摸传感器才能正常工作。每次复位的时候蜂鸣器都会响一下,10秒之内按触摸键都没有反应。 后来我接了一个4.7μF的电解电容器和两个100nF的无极性电容器,问题就解决
[单片机]
STM32入门学习笔记之uCOS-II系统移植3
⑤这两个函数都用于任务切换,它们的本质都是触发PendSV中断,具体切换过程在PendSV的中断函数中进行,其中OSCtxSw是任务级切换,OSIntCtxSw是中断级切换,是从中断退出时切换到一个任务中,从中断切换到任务的过程中,CPU的寄存器入栈工作已经完成。 OSCtxSw PUSH {R4, R5} LDR R4, =NVIC_INT_CTRL ;触发PendSV异常 LDR R5, =NVIC_PENDSVSET STR R5, ;向NVIC_INT_CTRL写入NVIC_PENDSVSET触发PendSV中断 POP {R4, R5} BX LR OSIntCt
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved