完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
固件库:固件库就是把操作寄存器的代码封装成函数给用户操作寄存器实现想要的功能
用固件库操作寄存器,新建工程的步骤: 1.在本地新建一个文件夹,存放库文件 CMSIS存放内核相关的头文件、启动文件和system _stm32f4xx.h system_stm32f4xx.c文件 Project存放工程文件 STM32F4xx_StdPeriph_Driver存放外设的头文件和源文件 User存放main.c、mian.h、stm32f4xx_it.h、stm32f4xx_it.c、(编写中断服务函数,定义了一些特殊的终端接口,一般中断函数都是自己写的)stm32f4xx_conf.h(根据芯片的型号去增减外设的头文件) 启动文件(startup_stm32f429_439xx.s)是用汇编语言编写的。EQU相当于C语言中的define Stack—栈(向下生长) Heap—堆(向上生长) __initial_sp(表示栈的结束地址) __heap_base(表示堆的起始地址) __heap_limit(表示堆的结束地址) 启动文件主要包含了中断服务的定义和中断服务程序,中断服务程序只是占一个位置,中断服务程序还是有自己编写还有一个复位程序 在启动文件中调用了SystemInit()这个函数以及main()函数 2.然后打开keil,新建工程。添加组,把对应的源文件添加进去 一个工程中必须要有startup_stm32f429_439xx.s、system _stm32f4xx.h、system_stm32f4xx.c、stm32f4xx.h这四个文件 startup_stm32f429_439xx.s启动文件(调用SystemInit()这个函数去配置STM32的时钟, 设置 C库的分支入口“__main(用来调用main函数)) system_stm32f4xx.c这个文件包含了stm32f4xx的系统时钟配置,启动文件调用的SystemInit()的这个函数是在system_stm32f4xx.c这个源文件中,这个源文件包含了stm32f4xx.h这个头文件。 stm32f4xx.h这个文件包含了stm32f4xx所有的外设寄存器定义、位定义和寄存器映射 3.编译 会发现有很多错误,因为我们在添加组的时候没有添加头文件的路径所以导致有错误 修改错误:(1) 首先打开选项卡,(C/C++)把需要用到的头文件路径添加进去 (2)编译一下,打开“stm32f4xx.h”这个文件,要定义宏(要用的是标准库,不是HAL库)和用的芯片 (3)把stm32f4xx_fsmc.h,去掉选择不编译(因为stm32f4xx_fmc.h这个头文件已经包含了stm32f4xx_fsmc.h,不能重复定义) (4)修改stm32f4xx_it.c文件(去掉void SysTick_Handler(void)函数中的SYSTIK Handler 和#include math.h) 完成后就可以写代码了 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:43 , Processed in 0.652899 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号