完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这节课开始正式进入库函数学习。
回顾在上几节知识,从最开始的寄存器配置到函数操作,添加了启动文件、stm32f10x_gpio.c、stm32f10x_gpio.c和stm32f10x.h。 在实际库函数操作中需要添加更多的文件(参考野火教程)。 1、启动文件 startup_stm32f10x_md.s 完成初始化功能,包括设置堆栈指针、初始化中断向量表等等。如果是初学32的学员了解即可,如果打算往嵌入式方向发展的学员要认真学习。 2、时钟配置文件 system_stm32f10x.c,以前讲过我们是VIP服务,每个引脚都要相对应的时钟服务,所以把这些关于时钟的函数专门集成在这个函数里。 3、内核相关 core_cm3.c:内核外设的驱动固件库 core_cm3.h:实现内核外设的寄存器外设 这两个文件一般是不需要去使用,跟内核有关。有的学员会觉得外设不就是LED、数码管、液晶屏吗。不是的,一个芯片有内核和外设之分。就好像一个苹果,里面还有核和肉之分,核是统一的,肉可以不一样。就像我们的stm32f103,内核是由arm公司统一授权,生产stm32公司就是其中一家被授权使用。等会儿要讲的外设就是stm32公司自己设计的。 stm32的每个引脚基本都能实现定时,所以需要专门的文件去管理这些中断。 misc.hmisc.c SysTick也在这个文件中定义,以后讲。 4、外设相关 stm32f10x.h实现内核之外的外设寄存器的映射。 我们接触到的第一个是stm32f10x_gpio.c和stm32f10x_gpio.h,其实还有USRAT、SPI等等。如USRAT用stm32f10x_usrat.c和stm32f10x_usrat.h来表示,抽象出来就是 stm32f10x_usrat.c和stm32f10x_usrat.h 5、头文件配置 因为有总多外设,每个外设都有相应的头文件和源文件,把所有的头文件组成一个大的头文件。 stm32f10x_conf.h 里面有 stm32f10x_usart.h、stm32f10x_i2c.h、stm32f10x_spi.h、stm32f10x_dac.h等 6、中断服务函数 stm32功能之所以强大是因为每个引脚能产生中断,所以需要专门的文件去管理。 stm32f10x_it.hstm32f10x_it.c 分析完所需的文件后开始搭建库函数操作平台。 官方给我们提供了固件库,相当于原材料,我们利用这些原材料做我们自己的菜。 新建文件夹,还是命名为“template”,里面新建四个文件夹。 将固件库中的 C:Desktop【固件库】STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport core_cm3.h和core_cm3.c 复制到我们文件夹中的 C:DesktoptemplateLibrariesCMSIS 将固件库中的所有文件 C:Desktop【固件库】STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x 复制到C:DesktoptemplateLibrariesCMSIS 打开startup,删除如下图三个文件夹。 将固件库中的 C:【固件库】STM32F10x_StdPeriph_Lib_V3.5.0Libraries的STM32F10x_StdPeriph_Driver文件夹,复制到 C:DesktoptemplateLibraries。 将固件库中的 复制我们自己文件夹中的User目录下。 在我们自己文件夹中的User中新建main.c,输入程序。 打开Keil,新建工程到“project”文件夹。 下面步骤基本跟以前一样,完成到如下图。 在左侧的“Target1”中右键,选择下图中的红色框部分。 弹出如下图所示。 修改至如下图所示,然后选中“STARTUP”,点击箭头所指。 定位到我们自己新建文件夹下的arm文件夹,发现里面是空的。 在文件类型里面选择(。),选择我们的启动文件。 可以看到在STARTUP后多了文件。 同理在CMSIS里添加“core_cm3.c”和system_stm32f10x.c。 在FWLIB里添加我们自己夹下的 C:DesktoptemplateLibrariesSTM32F10x_StdPeriph_Driversrc的所有文件。 在USER下添加“main.c”和“stm32f10x_it.c”。 点击ok,回到了Keil主界面,看左边的框就是我们刚才操作的。 总结下:我们在添加的都是源文件,也就是.c的文件。因为一般头文件和源文件都是成对出现,编译源文件后会自动加载头文件,这是因为我们在写源文件时第一句就是包含自家的头文件。 但是我们要加载头文件路径,不然编译器不知道去哪找对应的头文件,至少告诉人家路怎么走。 点击“魔术棒”,弹出如下对话框,选择“C/C++”,点击②处。 添加哪些路径呢,比如CMSIS下有头文件,所以要把这个路径添加。 点击①处,出现对话框,将文件定位到“CMSIS”,确定。 完成后如下图。 在下图中添加框中内容,箭头所指是逗号,一定要在英文状态下输入,为防止大家输入错误,可以复制我的。 USE_STDPERIPH_DRIVER,STM32F10X_MD 确定以后,编译程序。 出现一个警告,双击上图中的第一个框。将光标闪烁放到最后,由于是截图看不到,就是箭头所指位置。 再次编译, 0 Error(s), 0 Warning(s)。 在进行相关的设置,如下图,那么以后基本可以用这个模块了,大家最好自己亲手做一次,以后直接拿来可以用了! |
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
4677个成员聚集在这个小组
加入小组3379 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4304 浏览 1 评论
4336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-1 21:01 , Processed in 0.550275 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号