硬件技术--000单片机

硬件技术--000单片机,第1张

硬件技术--000单片机

文章目录
  • 简介
  • 1 创建工程模板
  • 2 程序下载
    • 2.1 ST-link V2
    • 2.2 串口下载
    • 2.3 一键下载

简介

单片机可以理解为一种简单的微型计算机,具有运算单元、IO、总线、定时器等外设。常见的有51系列32系列,其中最著名的莫过于意法半导体公司的STM32系列,以其简单易上手、资料丰富、功能强大的特性成为了现如今大部分学生的首选。

1 创建工程模板

  创建工程第一步,也是最重要的一步。那就是创建一个文件夹嵐。
  文件夹命名的可以按照自己的习惯,不过也有一些大家默认的文件名称,也是大家在各种教程中见到的样子。
  首先先大概介绍一下所用到的文件名称及其作用。创建一个工程大概需要用到以下文件。

  1. 内核文件(core_cm3.ccore_cm3.h)
    进入内核所用到的文件,不需要修改,也不要动。
  2. 启动文件(startup_stm32f10x_hd、startup_stm32f10x_md等)
    启动文件,后缀有hd大容量、md中容量等区别,要根据使用芯片的不同来更换。若是一个大容量的芯片,例如STM32F103RC则用startup_stm32f10x_hd。若是中容量芯片,例如STM32F103C8则用startup_stm32f10x_hd。注意魔术棒选项中的define也要修改。
  3. 中断文件(stm32f10x_it.c.h)
    里面是一些中断函数的定义。
  4. 时钟文件(system_stm32f10x.c.h)。
    配置系统的式中所用的文件。

首先要根据自己的习惯建立文件夹。我自己的习惯通常是建立以下几种文件夹。

  1. 其中Doc文件夹存放一些对与这个工程的说明,以免下次打开文件夹不知道这个工程是干啥的。
  2. FWLib是用来存放固件库的,也就是我们通常调用的官方函数库。
  3. Output用来存放编译后的输出文件,方便查找。
  4. Peoject用来存放工程文件,也就是创建工程时所选定的位置。
  5. System用来存放一些官方启动文件之类的,因为平时这些文件不需要修改,所以就把他们打包放在了一起,眼不见为净。
  6. User通常用来存放自己编写的代码。

打开Keil软件,选择创建一个新的工程,工程存放位置选择Peoject文件夹。命令为Template,作为以后的模板,创建好了一个模板工程之后,以后再写项目可以直接将该空的工程模板复制即可。
[外链图片转存失败,源站可能有防盗图片保存下来直1]shttps://GlDiseblog.c1dmg.cn/7b2b04d0296ac4e9502999359.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q68801108NETiBA6L-Z5Liq5LiN5aW9,size_2),color_FFFFFF,t_70,g_se,x_16htps://img-bl_70,g_se,x_16)]
选择好文件位置之后会d出一个窗口,让你选择芯片型号,因为我用的是STM32F103C8T6,所以选择对应的芯片型号就好。

选择芯片之后还会d出如下窗口,暂时不必关心,关掉就好。

此时的界面如下,可以看左侧文件列表里面是空的。

接下来我们需要向里面添加内核文件、启动文件等官方提供的固件库,大概可以分为.c后缀的源文件和.h后缀的头文件。
首先我们来添加源文件,源文件通过品字按钮添加,需要我们建立相对应的文件夹。

按下该按键之后d出如下界面。

在左侧第一框中把Target 1修改乘Template,其实也可以不修改。中间一列中建立Doc、User、System、FWLib分组,这里是与我们前面创建的文件夹一致的,剩下的Project、Output不用创建对应的分组,没用。创建后如图所示

打开文件夹,将以下文件分别复制到对应的文件夹中。


接下来向对应的分组中添加文件。向FWLib分组中添加FWLib文件夹中的src文件夹中.c源文件。

向System分组中添加System文件夹中的如下文件。

向User分组中添加User文件夹中自己写的.c源文件

此时返回工程界面可以看到左侧文件夹栏中已经有了对应的文件。

源文件添加完毕,接下来该添加.h头文件。点击魔术棒选项,将User文件夹、FWLib文件夹、System文件夹添加到其中。


至此工程创建完毕。

2 程序下载 2.1 ST-link V2

ST-link V2是一种下载器,利用该下载器可以直接在工程界面下载程序,而不必再用串口下载程序软件。长下面这个样。
对于STM32的程序下载,主要用到四个接口,VCC、GND、SWCLK、SWDIO。大部分开发板再设计的时候都会将这几个IO直接引出,所以拿杜邦线将对应IO连上就好。
值得注意的是该下载器有10个插口,有缺口一侧的是RST对应的那一侧,另一侧是我们下载程序所需要用到的一侧。
程序下载的过程也非常简单。打开魔术棒选项,选择Debug选项,再其中选择ST-link仿真器。

点击旁边的setting选项,应该出现以下界面。

再次点击Flash Download选项,选中Reset and Run,不然的话每次下载完程序还需要手动重启才能运行程序。

全部勾选完成之后,点击确定,返回主界面。编译完成后,点击Load,下载程序。程序下载完成后有如图提示。

2.2 串口下载

想要用串口下载需要改变BOOT0和BOOT1的状态。比较麻烦。BOOT0/BOOT1用来控制单片机的启动方式他们的值会在复位后的第四个脉冲被锁存。启动方式如图。

这里其实并不常用,我也不是特别清楚。
第一种0X模式为从FLASH启动,将FLASH作为程序运行起点(地址映射),也是我们最常用的模式。
第二种10模式主要是当想用串口下载程序时使用的模式,在该模式启动的程序地址处有一段引导程序,该引导程序使得能够用串口向FLASH中下载程序。
第三种11模式,没用过。
串口下载程序需要以下步骤。

  1. 将BOOT0置1,BOOT1置0。
  2. 然后按下复位按键,利用串口下载程序。
  3. 将BOOT0置0,BOOT1置0。
  4. 按下复位键
2.3 一键下载

由上面我们看到,想要用串口下载程序的话是非常麻烦的,用户体验非常不好。所以就有了一键下载的方法。
一键下载电路是利用自动改变BOOT0和BOOT1的状态,来达到一键下载程序的目的。
原子的一键下载电路如下图所示。

CH340是USB转串口的芯片。
#DTR#RTS都是输出口,他们两个在串口下载软件的作用下控制Q2、Q3的通断从而达到控制BOOT0、BOOT1状态的效果。
分析电路可知,Q3状态由RTS#控制,RTS为低时Q2导通,BOOT0为高电平,反之为低电平。
RTS#为低DTR#为高时,Q2导通RESET为低。
这里之所以没有涉及到BOOT1,是因为一般BOOT1默认接0,所以只要控制BOOOT0和复位RESET的状态即可。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5698690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存