完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` STM32F411 nucleo试用报告二-----GPIO口的控制(让LED亮起来) 对于学习芯片,我一直有一个观点:只要学会了怎么操作IO端口,那么就算学会了一半。所以第一次接触STM32F411这块板,我的第一件事就是怎么控制LED。废话少说,开始吧! 第一步:建立工程:从官方固件库里找文件建立工程即可,具体的可心参考下面这段文字: STM32 官方标准固件库: 解压之后如下: 文件夹介绍: Libraries 文件夹下面有 CMSIS 和STM32F4xx_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件。 CMSIS 文件夹存放的是符合 CMSIS 规范的一些文件。包括 STM32F4 核内外设访问层代码,DSP 软件库,RTOS API,以及STM32F4 片上外设访问层代码等。我们后面新建工程的时候会从这个文件夹复制一些文件到我们工程。 STM32F4xx_StdPeriph_Driver 放的是 STM32F4 标准外设固件库源码文件和对应的头文件。inc 目录存放的是 stm32f4xx_ppp.h 头文件,无需改动。src目录下面放的是 stm32f4xx_ppp.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应。这里的文件也是固件库外设的关键文件,每个外设对应一组文件。 Libraries 文件夹里面的文件在我们建立工程的时候都会使用到。 Project 文件夹下面有两个文件夹。顾名思义,STM32F4xx_StdPeriph_Examples文件夹下面存放的的 ST 官方提供的固件实例源码,在以后的开发过程中,可以参考修改这个官方提供的实例来快速驱动自己的外设,很多开发板的实例都参考了官方提供的例程源码,这些源码对以后的学习非常重要。STM32F4xx_StdPeriph_Template文件夹下面存放的是工程模板。 Utilities 文件下就是官方评估板的一些对应源码,这个对于本手册学习可以忽略不看。 根目录中还有一个 stm32f4xx_dsp_stdperiph_lib_um.chm 文件,直接打开可以知道,这是一个固件库的帮助文档,这个文档非常有用,只可惜是英文的,在开发过程中,这个文档会经常被使用到。 (1)在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为 工程模板。这是工程的根目录文件夹。然后为了方便我们存放工程需要的一些其他文件,这里我们还新建下面 5 个子文件:CORE,FWLIB,OBJ,SYSTEM,USER。至于这些文件夹名字,实际上是可以任取的,我们这样取名只是为了方便识别。 (2) 接下来,打开 Keil,点击Keil 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹工程模板之下的 USER 子目录,同时,工程取名为 Template 之后点击保存,我们的工程文件就都保存到 USER 文件夹下面。 (3) 接下来会出现一个选择 Device 的界面,就是选择我们的芯片型号,这里我们定位到STMicroelectronics 下面的 STM32F411RE。这里我们选择 STMicroelectronics--STM32F4Series--STM32F411--STM32F411RE (4)下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。 打开官方固件库包,定位到我们之前准备好的固件库包的目录: STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesSTM32F4xx_StdPeriph_Driver 下面, 将目录下面的src,inc 文件夹 copy 到我们刚才建立的 FWLib 文件夹下面。 (5)下面我们要将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。 打开官方固件库包,定位到目录 STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDeviceSTSTM32F4xxSourceTemplatesarm下面,将文件 startup_stm32f40_41xxx.s 复制到 CORE 目录下面。然后定位到目录STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISInclud,将里面的头文件 core_cm4.h和core_cm4_simd.h 同样复制到CORE 目录下面。 (6) 接下来我们要复制工程模板需要的一些其他头文件和源文件到我们工程。首先定位到目录:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDeviceSTSTM32F4xxInclude 将里面的2 个头文件 stm32f4xx.h system_stm32f4xx.h 复制到USER 目录之下。这两个头文件是STM32F4 工程非常关键的两个头文件。后面我们讲解相关知识的时候会给大家详细讲解。然后 进入目录STM32F4xx_DSP_StdPeriph_Lib_V1.4.0ProjectSTM32F4xx_StdPeriph_Templates , 将 目 录 下 面 的5 个 文 件main.c stm32f4xx_conf.h , stm32f4xx_it.c ,stm32f4xx_it.h ,system_stm32f4xx.c 复制到USER 目录下面。 (7)我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入我们的工程中去,右键点击 Target1,选择Manage Components.添加后如下图: (8) 接下来我们要在 MDK 里面设置头文件存放路径。也就是告诉 MDK 到那些目录下面去寻找包含了的头文件。这一步骤非常重要。如果没有设置头文件路径,那么工程会出现报错 头文件路径找不到。添加方法是点击魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入: STM32F40_41xxx(这一标识符有的可以删掉),USE_STDPERIPH_DRIVER。注意这里是两个标识符 USE_STDPERIPH_DRIVER,他们之间是用逗号隔开的。 (9)在编译之前我们首先要选择编译中间文件编译后存放目录。 方法是点击魔术棒然后选择“Output”选项下面的“Select folder for objects…”, 然后选择目录为我们上面新建的 OBJ 目录。 (10)配置ST-LINK (11)按下 F7即可进行编译,编译可能会出现如下错误,缺少某个头文件 我们可以打开 Manage Run-Time Environment,添加组件 重新编译后提示:"..OBJTemplate.axf" - 0 Error(s), 0Warning(s). 上面红色的文字是从别人那借鉴的,可能会出现以下几个问题,第一个是出现少什么文件的,最好是到固件库里面去搜一下,加进去就可以了;另外一个是编译通过后下载可能会出现如下错误:cortexf4 这个可能是芯片选择有问题:重新添加add一下512b的一个片子 ,就可以了。 最后就是使用MDK的调试器调试可能会出现下列错误: *** error 65:access violation at 0x40023800 : no 'read' permission 关于这个,反正咱已经有板子了,就不去研究他了。好像是软件的问题。 下面就是led了, 直接上代码:首先是初始化IO端口的(PA5口)。 voidLED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure;//定义一个端口初始化的结构体。 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//这是初始化AHB总线时钟,因为所有IO口都挂在这个总线上,这和M1是有区别的。每次启动芯片都要动初始化AHB总线。 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//这里指明我们有使用的端口是PA5. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; //配置为输出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //端口速度100MHz(随意) GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; //这里设置为上拉 GPIO_Init(GPIOA,&GPIO_InitStructure); //通过这里就完成PA5口的初始化工作了。 } 然后就是MAIN函数里面的了 while(1) { //LED(ON); GPIO_SetBits(GPIOA,GPIO_Pin_5);//位设置函数置1 Delay(50);//延时, // LED(OFF); GPIO_ResetBits(GPIOA,GPIO_Pin_5);//置0 Delay(10); //延时, } 编译,下载,OK! 这里是使用了库函数,使用寄存器也一样了,只是自己需要看看参考手册的寄存器位设置,最后把中文的STM32F4系列的参考手册共享出来! `
STM32F4xx中文参考手册.pdf
(20.6 MB, 下载次数: 128
)
|
|
相关推荐
|
|
2136 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1970 浏览 3 评论
4566 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2116 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2629 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 14:38 , Processed in 0.745501 second(s), Total 36, Slave 28 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号