STM32学习笔记(1)——搭建库函数工程

摘要:
STM32F10X_ MD再次编译时发生错误:函数“assert_param”解密错误,然后添加这样的宏:1。起初,我想排除stm32f10x_对于conf.h,我认为可以直接在keil的项目文件管理中添加所需的c文件,然后包括驱动程序h文件,因为stm32f10x_ conf.h中还有一种管理调试模式:

好吧,现在开始学习STM32了,顺便把这个过程记录下来,Keil安装之类就不说了,先用Keil搭建一个工程。

我是参照这篇文章开始的:《零死角玩转stm32-初级篇(终结篇)》

开始的时候我完全按照文章介绍的方式一步一步搭建的,下面我再自己搭建一下:

1、先获取STM32的库函数开发包。

  貌似现在最新版本的firmware还是3.5版本的。

  在这里可以下载到:ST官网(我是在ST官网翻了很久才翻到的啊)也可猛击这里直接下载

  为了方便,这个博客里也上传了一份,不过把chm文件去掉了:点这里下载

2、组建工程。

  开始看到zip包的时候感觉文件挺多的,不知如何处理,现在回过来整理一下其实也不多,必需的大概就是这几个:

    STM32学习笔记(1)——搭建库函数工程第1张

  我把目录安排成这样。然后添加include路径:

  STM32学习笔记(1)——搭建库函数工程第2张

  直接编译会出现这样的错误:

  core\stm32f10x.h(96): error:  #35: #error directive: "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"

  搜索一下,需要定义这样一个宏:STM32F10X_MD

  STM32学习笔记(1)——搭建库函数工程第3张

  再次编译的时候出现这样一个错误:

  driver\misc.c(99): warning:  #223-D: function "assert_param" declared implicitly

  然后再添加这样一个宏:USE_STDPERIPH_DRIVER

  中间用空格隔开,其实我试验了一下用半角逗号隔开也是正常的

  STM32学习笔记(1)——搭建库函数工程第4张

  这回编译就通过了。


但是,这其中有几个问题:

1、开始的时候我是想不包含stm32f10x_conf.h这个文件的,因为我发现里面基本上就是用来配置哪些驱动是需要的,哪些驱动是不需要的,我感觉直接在keil的工程文件管理里添加需要的c文件然后包含驱动的h文件就行了,比这样配置一个conf文件还方便。然后我发现在stm32f10x.h文件中有句这样的:

#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif

然后我发现USE_STDPERIPH_DRIVER宏基本上就是在这里用的,所以我果断不想定义USE_STDPERIPH_DRIVER宏了,这个stm32f10x_conf.h也不想用,结果发现还是不行,因为stm32f10x_conf.h里还有个管理debug模式的:

#ifdef  USE_FULL_ASSERT

/**
  * @brief  The assert_param macro is used for function's parameters check.
  * @param  expr: If expr is false, it calls assert_failed function which reports 
  *         the name of the source file and the source line number of the call 
  *         that failed. If expr is true, it returns no value.
  * @retval None
  */
  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
  void assert_failed(uint8_t* file, uint32_t line);
#else
  #define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */

懒得折腾了,还是默认这样吧。

2、暂时不写了,有点累了,得回去洗澡了。嘿嘿

免责声明:文章转载自《STM32学习笔记(1)——搭建库函数工程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】C#中Invoke的用法ORM框架疏理——廖雪峰实战系列(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

STM32学习笔记——定时器中断(向原子哥学习)

定时器中断 STM32的定时器功能十分强大,有TIME1和TIME8等高级定时器,也有TIME2~TIME5等通用定时器,还有TIME6和TIME7等基本定时器。在本章中,我们将利用TIM3的定时器中断来控制DS1的翻转,在主函数用DS0的翻转来提示程序正在运行。选择难度适中的通用定时器来介绍。 1、STM32通用定时器简介 STM32的通用定时器是一个通...

git 学习删除某次提交

cmd里的快捷键 ctrl+a : 跳到开头 ctrl+e : 跳到结尾 which vi 查看vi这么命令在哪个目录下 >> /uer/bin/vi git log 太多了看不完, 空格 往下看 q退出 ctrl+f往后走, ctrl+d 往前走 mkdir a && cd - 创建并进入啊目录 vim下 :...

每个文件之间延迟启动批处理bat方法之一

每个文件之间延迟启动批处理bat方法之一 知识点:xp程序中通过ping 127.0.0.1 -n 20 来实现延时操作,ping本地地址20行。            win7中通过timeout 20 来实现延时20秒。 新建批处理bat文件,  .txt→.bat 改扩展名或txt里另存为.bat就可以 例B是路径名包含空格类的需要用引号" "否则会...

本地Git配置绑定远程Github账户

(背景是本地环境以前没有绑定过github,即没有残余文件) 本地设置用户名和链接远程账户(引号内修改为自己的用户名和账号) git config --global user.name"wangqinghe95"git config --global user.email"675072584@qq.com" 配置密钥 ssh-keygen -t rsa -...

MongoDB 4.4 安装 linux

1. 官方链接:  https://docs.mongodb.com/v4.4/tutorial/install-mongodb-enterprise-on-red-hat/ 1、配置存储库。 创建一个/etc/yum.repos.d/mongodb-enterprise-4.4.repo文件,以便您可以使用yum以下命令直接安装 MongoDB 企业版:...

树莓派4b安装Ubuntu20.04

树莓派4b安装Ubuntu20.04 下载Ubuntu20.04镜像 下载地址 安装Raspberry Pi Imager 下载地址 烧录系统 打开Raspberry Pi Imager,选择自己刚刚下载的ubuntu系统 准备一张SD卡和读卡器,插上电脑,并选择该SD卡 选择好后点击WRITE,进行系统的烧录,烧录完成后,即可拔出SD卡 配置...