学习笔记-STM32新建工程

一、b站江协科技新建工程教程(基于标准库)

视频链接http://【STM32入门教程-2023持续更新中】 https://www.bilibili.com/video/BV1th411z7sn/?p=4&share_source=copy_web&vd_source=cf317824b340430438369c8e09242fa4

        江协科技所使用的芯片为STM32F103C8T6,故教程以此芯片为示例

1.新建一个存放工程的文件夹。方便管理

 2.打开keil软件,点击Project,New uVision Project。

选择第一步创建的文件夹,在里面新建一个文件夹,用来存放本次的工程。然后点进去,给工程起一个名字,如Project。可以起一个通用点的名字,文件夹名称时很容易改的,但工程名称不容易改。点击保存。

 3.选择芯片型号

 到这一步工程就建好了,但还不能直接使用。还需要添加一些必要文件。

4.添加必要文件

        打开固件库文件夹

        我们把这些启动文件复制,可以在刚才新建的2-1 STM32工程模板文件夹里新建一个Start文件夹,将复制的启动文件放在Start中

        接着回到STM32F10x文件夹,可以看到stm32f10x.h和两个system开头的文件,stm32f10x.h就是STM32的外设寄存器描述文件,用来描述STM32有哪些寄存器及它对应的地址的。两个system文件是用来配置时钟的。我们把这三个文件复制,也粘贴到Start文件夹里。

        接下来,因为STM32是内核和内核外围的设备组成的,而且这个内核的寄存器描述和外围设备的描述文件不是在一起的。所以我们还要添加一个内核寄存器的描述文件。我们可以打开CM3,CoreSupport文件夹。这两个cm3文件就是内核的寄存器描述。他还带了一些内核的配置函数,所以多了个.c文件我们把他俩一并复制下来,也粘贴到start文件夹下。到此为止,我们工程的必要文件就复制完成了。

        回到keil中,把刚才复制的文件添加到工程里来,我们可以点击选中这个Source Group,单击一下。把这个组名字改成Start。然后右键。选择添加已存在的文件到组里来。

        我们首先添加一下启动文件,这个启动文件有很多分类。我们只能添加其中一个。STM32F103C8T6型号的芯片要选择这个后缀为md.s的启动文件。然后将剩下的.c和.h文件都添加进来。启动文件的选择可以跳到标题7查看。

        最后我们还需要在工程选项里添加上这个文件夹的头文件路径,不然软件找不到.h文件。点击魔术棒,打开工程选项,在C/C++里,点击Include Paths栏右边的三个点。

        在这里新建路径,再点三个点的按钮,把Start的路径添加进来。

接下来新建一个main函数,看看这个工程是否可行。在2-1工程文件夹下建立一个名为User的文件夹,然后在keil中,右键一Target新建一个分组User,再右键User新建一个.c文件,命名为main,保存在刚简建立的User文件夹下。

在main.c里,我们先右键,插入头文件,选择stm32f10x.h。

        写一个main函数,文件最后一行必须是空行,不然会报警告。点击build按钮编译。如果显示0错误0警告,就说明我们建立的工程没有问题。到此,一个用寄存器开发的工程就建立好了。接下来要开始添加库函数

5.添加库函数

        在工程文件夹中新建一个名为Library的文件夹,用来存放库函数,接着打开固件库文件夹,打开Libraries,STM32标准外设驱动,src。这些就是库函数的源文件,misc.c是内核的库函数,其他的就是内核外的外设库函数了。将文件全选,复制到我们新建的Library文件夹下然后再打开固件库的inc文件夹,这些为库函数的头文件,也是全选复制到Library文件。

        回到keil,新建分组Library,将刚才复制进Library文件夹里的文件都添加进来。这样就把所有的库函数文件都添加进来了。但是对于这个库函数来说,现在还不能直接使用,我们需要再添加一个文件。

        我们打开固件库文件夹,打开Project,STM32Template,可以看到stm32f10x_cinf.h和两个it结尾的文件。这个conf文件是用来配置库函数头文件的包含关系的,另外这里面还有个用来参数检查的函数定义,这是所有库函数都需要的。两个it文件是用来存放中断函数的。把这三个文件复制到我们创建的User文件夹里,并在keil中添加到User分组中。

最后还需要一个宏定义,右键这个main.c中的stm32f10x.h头文件,打开文件,文件最下面有一个条件编译语句,意思是如果你定义了USE_STDPERIPH_DRIVER(使用标准外设驱动)这个字符串,下面这个include conf.h语句才有效。

               所以我们需要复制一下这个字符串,点击魔术棒打开工程选项,在C/C++的Define栏中粘贴这个字符串。这样才能包含标准库函数。还有下面的头文件路径也不要忘了,把User和Library目录的路径也添加上。

到此,基于库函数的工程就建立好了,点击编译按钮,如果得到0错误0警告,则说明我们建立的工程没有问题。接下来可以编写代码下载到板子中测试一下。

6.下载调试的相关设置

        点击魔术棒,选择Debug,调试器默认是ULINK,点击选择自己对应的调试器,然后点击Settings,在Flash下载这一项,把Reset and Run 这一项勾上,这样下载程序之后会立即执行程序,否则每次下载后还需要按一下板子上的复位按键才能执行程序。

        

7.总结

8.启动文件的选择

        根据型号和Flash的大小,来选择对应的启动文件,第一个图中的缩写,对应着启动文件的后缀,Flash的容量可以通过搜索stm32芯片命名规则来确定。例如STM32F103ZET6,对应容量为512k,就选择后缀为HD的启动文件。

9.遇到的问题及解决方法

        1.main.c文件中包含stm32f10x.h时报错,问题如下。

解决方法一:将工程路径所有文件夹的名字中的中文都去掉。

解决方法二:在魔术棒,Target选项中,将ARM Compiler选择为 Use default compiler version 5,默认为6,或是选择下面的V5.06。

两种解决方法实测都可行。

        本篇文章为学习笔记,目的是方便自己复习。其内容相较于b站江协科技的视频内容来说不够完善。欢迎大家在评论区讨论补充其中的不足和错误。也欢迎分享自己遇到的问题及解决方法。不过博主自己可能不会回答问题,因为是菜鸟一个,刚开始学啥也不懂。

        本来打算把正点原子的也一起归纳总结,时间原因未完待续吧。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32是一款非常流行的嵌入式微控制器系列,它具有强大的性能和丰富的外设资源。在学习STM32时,掌握如何进行Flash读写是非常重要的。 Flash是一种非易失性存储器,可以用来存储程序代码和数据。在STM32中,Flash存储器通常用来存储应用程序代码。下面是一个简单的Flash读写程序的示例: 1.首先,我们需要包含适用于所使用的STM32型号的头文件。例如,对于STM32F4系列,我们需要包含"stm32f4xx.h"。 2.然后,我们需要定义一个指向Flash存储器的指针变量。例如,可以使用如下代码:`uint32_t* flash_address = (uint32_t*)0x08000000;`其中0x08000000是Flash存储器的起始地址。 3.要读取Flash存储器中的数据,我们可以通过以下代码实现:`data = *flash_address;`其中data是一个变量,用于存储读取到的数据。 4.要写入数据到Flash存储器中,我们可以通过以下代码实现:`*flash_address = data;`其中data是要写入的数据。 需要注意的是,STM32的Flash存储器是有写保护机制的,因此在写入数据之前,我们需要禁用写保护。可以使用以下代码禁用写保护:`FLASH->KEYR = 0x45670123; FLASH->KEYR = 0xCDEF89AB;`然后才能进行数据写入。 另外,为了确保数据的完整性,我们可以使用CRC校验来验证Flash存储器中的程序代码的正确性。可以使用库函数来计算校验和,然后将其与预期的校验和进行比较以进行验证。 综上所述,掌握STM32的Flash读写操作对于嵌入式系统的开发非常重要。上述示例代码可以帮助我们快速进行Flash读写操作,同时注意写保护和数据校验可以提高数据的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值