分享

小项目大学问

 goandlove 2019-01-11
想必,在之前的两节课之中,即便是我多次提到放轻松,但未免感到懵逼,好多名词不懂,但,我想说的是:如果不懂,请暂从字面上来理解,还不懂?
本节课主要是给前面的点亮LED的超小项目来理解STM32的架构,首先,我们先来解决前面的疑问。
提醒:下面的内容是由以下两个官方资料整理所得,我们写代码的依据也都是根据这两本资料:
1、STM32F10x-参考手册
2、STM32F103xCDE_数据手册

1.jpg (12.94 KB, 下载次数: 0)

下载附件 保存到相册

7 天前 上传

1>STM32F103VET6                                

2.png (68.32 KB, 下载次数: 0)

下载附件 保存到相册

7 天前 上传

3.png (423.19 KB, 下载次数: 1)

下载附件 保存到相册

7 天前 上传

指南者所用的单片机是STM32F103VET6,一大串符号,有点迷,那么请看上面的两张图:
         通过查图,这个单片机属于基础版,主频72MHz(最高的时钟频率),100个引脚,512Kbytes,QFP封装,-40℃到85℃的工作温度。
2>GPIO
         GPIO是通用的输入输出口(General Purpose Input Output),如果会英语就很好记了,每个GPIO端口有两个32配置寄存器,两个32数据寄存器,一个32位置位/复位寄存器,一个16复位寄存器和一个32锁定寄存器。如果使用固件库的话,我们不讲底层的寄存器是如何配置的,只要简单知道的他的构成即可。
         每个GPIO是由寄存器和相关的控制电路构成。
  1.          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  2.          GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
  3.          GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  4.          GPIO_Init(GPIOB,&GPIO_InitStructure);
复制代码


         还记得之前的这几行代码么?通过初始化结构体变量来配置相关的寄存器,配置的有:
1、工作模式

4.png (53.15 KB, 下载次数: 0)

下载附件 保存到相册

7 天前 上传


     这是C语言中typedef(重定义)的enum(枚举类型),枚举类似于批量的define宏定义,我们还可以看到有两种输入和输出两种工作模式,因为STM32GPIO是复用的,也就是每一个IO口都有第二功能可以使用。
1-输入模式(模拟/浮空/上拉/下拉)
模拟输入:常用于电压采集。
浮空输入:输入的电平不是固定的,由外部器件的输入决定。
上拉/下拉输入:默认为低电平/高电平,例如获取按键的状态如果设置浮空输入,就不清楚是高电平还是低电平,必须加个上拉或者下拉电阻来保持稳定的电平状态,如果是下拉输入的话,就会方便很多。
2-输出模式(推挽/开漏)
推挽输出:可以通过单片机编程来控制IO的高低电平状态,底层是FET电路实现的。
开漏输出:可以通过单片机编程来控制IO的低电平状态和高阻态,底层是FET电路实现的。 3-复用功能(推挽/开漏)
唯一不同的是,上文所说的都是由单片机控制,复用功能的信号源来自于其它外设
2、引脚
选中挂载的指定引脚,之前学51的时候听过管脚的概念,其实引脚和管脚是一个东西,需要注意的是STM32的GPIO有16个引脚。
3、时钟速率
  1. typedef enum

  2. {

  3. GPIO_Speed_10MHz = 1,

  4.     GPIO_Speed_2MHz,

  5.     GPIO_Speed_50MHz

  6. }GPIOSpeed_TypeDef;
复制代码
时钟速率设置的越快,响应的速度就越快,如果对于功耗有要求的话,需要关注下配置的时钟速率。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多