[原创] 《stm32,我来了》第三章:小项目大学问-1
849 查看
6 回复
 楼主 | 发布于 2019-01-18 | 只看楼主
分享到:
原文:链接:https://pan.baidu.com/s/12MKCVQ7mwsGtuZlDAGu8gw 提取码:xu9p 
想必,在之前的两节课之中,即便是我多次提到放轻松,但未免感到懵逼,好多名词不懂,但,我想说的是:如果不懂,请暂从字面上来理解,还不懂?
本节课主要是给前面的点亮LED的超小项目来理解STM32的架构,首先,我们先来解决前面的疑问。
提醒:下面的内容是由以下两个官方资料整理所得,我们写代码的依据也都是根据这两本资料:
1、STM32F10x-参考手册

2、STM32F103xCDE_数据手册

1>STM32F103VET6  


指南者所用的单片机是STM32F103VET6,一大串符号,有点迷,那么请看上面的两张图:

         通过查图,这个单片机属于基础版,主频72MHz(最高的时钟频率),100个引脚,512Kbytes,QFP封装,-40℃到85℃的工作温度。
2>GPIO 
         GPIO是通用的输入输出口(General Purpose Input Output),如果会英语就很好记了,每个GPIO端口有两个32配置寄存器,两个32数据寄存器,一个32位置位/复位寄存器,一个16复位寄存器和一个32锁定寄存器。如果使用固件库的话,我们不讲底层的寄存器是如何配置的,只要简单知道的他的构成即可。

         每个GPIO是由寄存器和相关的控制电路构成。

         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
         GPIO_Init(GPIOB,&GPIO_InitStructure);
 还记得之前的这几行代码么?通过初始化结构体变量来配置相关的寄存器,配置的有:
1、工作模式 

  这是C语言中typedef(重定义)的enum(枚举类型),枚举类似于批量的define宏定义,我们还可以看到有两种输入和输出两种工作模式,因为STM32GPIO是复用的,也就是每一个IO口都有第二功能可以使用。 
1-输入模式(模拟/浮空/上拉/下拉) 
模拟输入:常用于电压采集。
浮空输入:输入的电平不是固定的,由外部器件的输入决定。 
上拉/下拉输入:默认为低电平/高电平,例如获取按键的状态如果设置浮空输入,就不清楚是高电平还是低电平,必须加个上拉或者下拉电阻来保持稳定的电平状态,如果是下拉输入的话,就会方便很多。 
2-输出模式(推挽/开漏) 
推挽输出:可以通过单片机编程来控制IO的高低电平状态,底层是FET电路实现的。 
开漏输出:可以通过单片机编程来控制IO的低电平状态和高阻态,底层是FET电路实现的。 3-复用功能(推挽/开漏)

唯一不同的是,上文所说的都是由单片机控制,复用功能的信号源来自于其它外设
2、引脚
选中挂载的指定引脚,之前学51的时候听过管脚的概念,其实引脚和管脚是一个东西,需要注意的是STM32的GPIO有16个引脚。
3、时钟速率

typedef enum

{ 

GPIO_Speed_10MHz = 1,

    GPIO_Speed_2MHz, 

    GPIO_Speed_50MHz

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






(1 ) (0 )
回复 举报

回复于 2019-01-18 沙发

感谢分享;
(0 )
评论 (1) 举报

回复于 2019-01-19 2#

(0 )
评论 (0) 举报

回复于 2019-01-20 3#

支持下,谢谢分享!
(0 )
评论 (1) 举报

回复于 2019-01-22 4#

感谢分享!
(0 )
评论 (1) 举报

回复于 2019-01-28 5#

支持一下,需要机器人方案的。硬件电路设计,软件编程,APP开发。机械臂非标自动化设计的,欢迎关注我,相互学习,共同进步,请联系我!
(0 )
评论 (1) 举报

回复于 2019-03-17 6#

谢谢分享!!!
(0 )
评论 (1) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部