- 浏览: 496648 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xouou_53320:
不明觉厉啊
蛇形走线有什么作用 -
Jathon_hs:
anlx27 写道Jathon_hs 写道不错, lz很有钻研 ...
关于暴风影音的广告问题& .dll文件 -
yaoyuande01:
因为我电脑里装的一直是很早版本的暴风。所以一直没有广告……呵呵 ...
关于暴风影音的广告问题& .dll文件 -
anlx27:
zhoutaomtv 写道LS的钻研精神值得称赞,虽然我已经很 ...
关于暴风影音的广告问题& .dll文件 -
zhoutaomtv:
LS的钻研精神值得称赞,虽然我已经很久不用暴风了,一直使用KM ...
关于暴风影音的广告问题& .dll文件
源地址:http://bbs.ednchina.com/BLOG_ARTICLE_1981649.HTM
简介
写这篇“小”教程主要是和大家分享使用STM32的基本方法。在一年以前,我开始接触并开始使用STM32。STM32价格便宜,外设丰富,开发和仿真环境使用方便,一下子便爱上了它。我当时使用了IAR编译环境,固件库也是以前的V2版本。由于ST公司更新了STM32的固件库,所以想试着使用新固件库。刚开始使用新库时也遇到了一些问题,但是慢慢熟悉不但觉得不难不烦,反而觉得V3比V2更好用。在这里我和大家分享一下使用V3.4库的方法,希望大家喜欢,如有错误请指出,在下不慎感激。
这篇“小”教程分以下四步来说,第一步,获得库文件,并进行适当的整理;第二步,建立工程,并建立条理清晰的GROUP;第三步,修改工程的Option属性;第四步:使用JLINK仿真调试。下面就分这四大步来逐个说明。
第一步 获得库文件,并进行适当的整理
第一步非常的简单,访问ST的官网上就可以获得最新的固件库,在我写“小”教程的时候最新的固件库是V3.4。除了获得固件库之外还可以获得和固件库相关的说明文档。在以前的官网上可以下载到一篇名为《如何从 STM32F10xxx固件库 V2.0.3 升级为 STM32F10xxx标准外设库 V3.0.0》的应用手册,但是在现在的ST官网上却找不到这篇十分有用的应用文档,不过却可以在百度文库中找到,这篇文档详细说明了新固件库的文件结构,在Keil工程建立之前,值得一看。
图1是新固件库改动比较大的部分,ST称为CMSIS。在这个文件夹下面出现了一些新的源文件、头文件和启动代码,新的源文件如core_cm.c system_stm32f10x.c,也有新的启动代码如start_stm32f10x_h/m/ld.s。在第二部分会详细介绍这些文件到底有什么作用,以及和V2版本的区别。在这里我也补充一句,V3.4还是和V3.0有点区别,V3.4又比V3.0多出了几个启动代码。
我个人觉得这些文件“埋”的太深,使用起来有点不方便,所以我一般对这些文件进行一些整理,把相关文件放在一起,并取上一个标准化的名字,这些文件夹的名字一般和原始固件库文件夹的名字相同,只是把需要的文件放在一起。例如我把启动代码(startup)放在一个文件夹下面,而在这个文件下面只放Keil MDK有关的启动代码,把IAR和GCC的文件全部给去除了,这样做不但使得文件夹内容“清爽”也可以避免不必要的错误。一般在工程目录下面我会建立以下几个文件夹,如图2所示。当然还会建立两个很有用的文件夹,一个取名为Listing,另一个取名为Object。这两个文件夹会保存Keil编译连接过程中产生的一些文件,虽然是一个不起眼的细节但是也请大家关注,不然在工程目录下面“邋遢”的很!
下面来简单说说这些文件各有什么作用。在下重在应用,对里面的内容也知之甚少。
core_cm3.c/core_cm3.h
该文件是内核访问层的源文件和头文件,查看其中的代码多半是使用汇编语言编写的。在线不甚了解。
stm32f10x.h
该文件是外设访问层的头文件,该文件是最重要的头文件之一。例如定义了CPU是哪种容量的CPU,中断向量等等。除了这些该头文件还定义了和外设寄存器相关的结构体,例如:
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
包含了那么多寄存器的定义,那么在应用文件中(例如自己编写的main源文件)只需要包含stm32f10x.h即可,而不是以前固件库的需要包含stm32f10x_conf.h这个头文件。
system_stm32f10x.c/h
该头文件也可以称为外设访问层的头文件和源文件。在该文件中可以定义系统的时钟频率,定义低速时钟总线和高速时钟总线的频率,其中最关键的函数就是SystemInit()了,这个后面会详细介绍。总之这两个文件是新固件库的重点,有了它粮也大大简化了使用stm32的初始化工作。
stm32f10x_conf.h
这个文件和V2版本的库的内容是一样的,需要使用哪些外设就取消哪些外设的注释。例如需要使用GPIO功能,但不使用SPI功能,就可以这样操作。
#include "stm32f10x_gpio.h"
/* #include "stm32f10x_spi.h" */
main.c
这个文件就不用多说了,自己编写。
stm32f10x_it.c/h
这两个文件包含了stm32中断函数,在源文件和头文件中并没有把所有的中断入口函数都写出来,而只写了ARM内核的几个异常中断,其他的中断函数需要用户自己编写。stm32f10x_it.c的最后给了这样一个模板。
/******************************************************************************/
/* STM32F10x Peripherals Interrupt Handlers */
/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
/* available peripheral interrupt handler's name please refer to the startup */
/* file (startup_stm32f10x_xx.s). */
/******************************************************************************/
/**
* @brief This function handles PPP interrupt request.
* @param None
* @retval None
*/
/*void PPP_IRQHandler(void)
{
}*/
从注释中的英文提示可以看出,中断向量的名称可以从相应的启动代码中找出,例如可以在startup_stm32f10x_md.s中找到USART1中断函数的名称——USART1_IRQHandler。其他的中断函数名可以以此类推,一一获得,在这里我就不一一复述了。
StdPeriph_Driver文件夹
该文件夹有包含两个文件夹,一个是src文件夹,另一个是inc文件夹,顾名思义,一个里面放的是元件一个里面放的是头文件。这两个文件夹包含了所有的STM32的外设驱动函数,其实和V2版本也没有太大的变化。简单来说,外设的驱动相当于windows的驱动函数API,这些驱动函数看到函数名基本就可以明白这个函数的作用,例如:GPIO_SetBits可以置位某个IO口,相反GPIO_ResetBits则可以复位某个IO口。我个人认为熟练使用库可以大大提高编程的效率,同时规范使用库函数也可以提高程序的可读性,让团队中的其他程序员可以快速的明白代码的作用。
发表评论
-
STM32L15x 系列 和STM32F10x 系列不同 之 时钟系统
2012-07-17 19:46 2578STM32L15x 系列 和STM32F10x 系列在 ... -
ALIENTEK MINISTM32 实验12 待机唤醒实验 实际测量
2012-07-12 13:47 1772ALIENTEK MINISTM32 实验12 待机 ... -
stm32L系列简介问答
2012-07-10 17:44 9289STM32L特性 [问] 请问STM32L与STM32的 ... -
stm32 keilMDK 一些编程习惯
2012-07-05 13:35 2216作为初学者,在keilMDK使用过时,编译通过但经常 ... -
PORTD ^= (1<<5)逻辑操作在单片机中作用
2012-07-04 09:37 3105PORTD ^=(1<<5); 等效于 PORTD ... -
Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?(转)
2012-07-03 16:36 66906一 基础知识 字节 8位半字 16位字 32位 ... -
stm32按键不同时长选择不同函数入口
2012-07-02 11:07 2584主要功能描述: stm32 中通过按键按下不同 ... -
按键(键盘)消抖
2012-06-20 18:18 6494按键电路:下图是神舟三号stm32开发板中的按键原理图。由图可 ... -
stm32 将LED1的状态反转
2012-06-14 18:16 2393//将LED1的状态反转 GPIO_Wri ... -
stm32 检测到按键按下 灯亮 否则灯不亮
2012-06-11 11:54 4673/****************************** ... -
stm32时钟配置
2012-06-11 10:54 2758stm32的时钟比51种类多,在这归纳总结 一 stm ... -
stm32 编译Error: L6218E: Undefined symbol Led_Turn_on_1 (referred from module.o)
2012-06-08 15:00 5838FPLOCK_V1.axf: Error: L6218E: U ... -
stm32 GPIO配置以及什么时候用 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
2012-06-07 17:51 15496问题一:配置GPIO的步骤 现在做一个最简单的GPIO ... -
什么时候需要用到RCC_APB2Periph_AFIO--复用IO时钟的使用
2012-06-07 16:18 25777转自地址:http://hi.baidu.com/xiaoyu ... -
stm32 void HardFaultException(void)
2012-06-06 11:08 2499今天调试的时候突然发现程序总是抛出这个异常 void ... -
stm32 keil MDK在线调试报错 Error: Flash download failed-"Cortex-M3"
2012-06-05 10:35 32449一 目的 装好keil MDK 想用 在 ... -
STM32 SPI 主模式下配置(神州三号开发板spi.c解析上)
2012-06-01 18:41 8374#include "spi.h" #in ... -
stm32 组号定义GPIO
2012-06-01 15:12 1613遇见这样一行代码 #define PIN_LEARN ... -
搞清 stm32 SPI总线 基础和编程(转)
2012-05-31 18:59 17772现在flash那部分还没看明白 但感觉这挺好的,所以转来~ ... -
神州三号开发板stm32 f103ze jlink连接失败拜求高手指点
2012-05-29 14:52 3083操作系统: win xp sp3 仿 真 器: jl ...
相关推荐
### 在Keil MDK环境下使用STM32 V3.4库 #### 一、获取库文件及适当整理 首先,我们需要获取最新的STM32 V3.4固件库及其相关文档。这些资源可以从ST(意法半导体)官方网站上免费下载。在撰写本教程时,最新的固件...
总结来说,STM32在KEIL MDK环境下使用V3.4库,可以充分利用其提供的便利性和高效性,快速进行STM32项目开发。通过理解HAL库的结构和使用方法,结合KEIL的强大功能,无论是初学者还是经验丰富的开发者,都能更高效地...
### 在Keil_MDK环境下使用STM32_V3.4库 #### 一、引言与背景 STM32作为一款高性能且经济实惠的微控制器系列,被广泛应用于各种嵌入式系统中。随着技术的发展,STM32的固件库也在不断更新,以满足更多开发者的需求...
在Keil MDK环境下使用STM32V3.4库的知识点可以分为以下四个主要步骤: 第一步:获得库文件,并进行适当的整理 - 访问ST官方网站获取最新的STM32固件库,本例中是V3.4版本。 - 下载固件库的同时,下载与之相关的说明...
STM32+嵌入式+单片机+参考资料
STM32V3.4固件库是专为STM32微控制器设计的一套软件库,用于简化开发者在STM32平台上的应用开发。该库提供了丰富的驱动程序和功能,覆盖了STM32系列的各种外设接口,如GPIO、定时器、串口、ADC、DMA等,有助于快速...
在使用MDK-32-V3.4进行开发时,首先需要安装Keil uVision IDE,这是一个常用的STM32开发环境。然后,将库导入项目,配置好MCU型号和相关外设设置,就可以开始编写代码了。同时,确保查阅官方提供的用户手册和数据...
本文将指导用户如何将固件库V3.4移值到Keil MDK,使用的 MCU 是 STM32F103VET6,但其他 MCU 只需小许修改即可。 知识点一:建立文件夹结构 在开始移值之前,需要建立相应用的文件夹,注意层次关系。文件夹结构应...
下载并解压“STM32_在KEIL_MDK环境下使用V3.4库.zip”后,会得到“STM32_在KEIL_MDK环境下使用V3.4库.pdf”文档,该文档将引导你完成库的配置和应用。 在KEIL MDK中创建新项目时,选择正确的STM32芯片型号。然后,...
STM32_V3.4固件库是ST公司为STM32系列微控制器提供的固件库,这个固件库提供了一整套的软件编程接口,允许开发者通过这些标准化的函数来操作STM32硬件。V3.4是固件库的一个版本号。使用固件库能够简化开发过程,降低...
固件库V3.5.0是STM32F10x标准外设库的一个版本,提供了完整的API(应用程序编程接口)和底层驱动,涵盖了STM32F10x系列的各种外设功能,如GPIO、定时器、串口、ADC、DAC、SPI、I2C、CAN、USB、FFT等。这个版本的更新...
本文档主要探讨的是如何在KEIL MDK中使用STM32的HAL(Hardware Abstraction Layer)库版本V3.4,以实现高效且易于维护的代码编写。 首先,了解STM32 HAL库是理解整个开发过程的关键。HAL库由STMicroelectronics提供...
《Keil uVision4 ARM STM32工程模板与固件V3.4详解》 STM32系列微控制器是基于ARM Cortex-M内核的高性能、低功耗微控制器,广泛应用于嵌入式系统设计。而Keil uVision4是一款强大的集成开发环境(IDE),专门用于...
- **MDK-ARM/RIDE/EWARM**:这些子文件夹提供了不同IDE环境下的项目模板,例如Keil MDK、Raisonance RIDE和IAR EWARM。 4. **Utilities** 文件夹中包含了针对STM32评估板的专用驱动和示例程序,对于使用官方评估板...
ODrive3.4 固件(keil移植版)是一个专为ODrive3.4设计的微控制器固件,该固件已经过移植,适用于基于Keil开发环境的项目。在深入探讨这个固件之前,我们需要理解ODrive是什么以及Keil开发工具的作用。 ODrive是一...
5. **在MDK环境下使用STM32固件库V3.4**:"在MDK环境下使用STM32固件库V3.4.pdf"可能是关于如何利用最新版本固件库进行开发的指南。固件库的每个版本都可能带来新的特性、改进和bug修复,这份文档将帮助开发者了解V...
本套入门资料包含四份文档,分别是STM32_入门教程、STM32学习笔记、STM32_指导教程以及STM32在KEIL_MDK环境下使用V3.4库的指南,旨在帮助初学者快速掌握STM32的基础知识和实战技巧。 1. **STM32_入门教程**:这本...
本篇将详细讨论如何在STM32上使用SD卡,并结合MDK(Keil uVision)进行程序开发。 首先,我们需要了解STM32与SD卡之间的通信方式。主要有两种:SPI(Serial Peripheral Interface)和SDIO(Secure Digital Input/...