嵌入式培训之STM32F407ZGT6 - 01

嵌入式概述

国内定义: 嵌入式就是以应用为中心 以计算机技术为基础 软硬可裁剪  适用于对体积  ,可靠性 ,功耗

,性能等方面有严格要求的专用计算机系统  要求嵌入式开发人员对嵌入式知识体系有清晰的认知

简单来说处理桌面PC和服务器之外  所有的控制设备都是嵌入式

GPIO

概念

        GPIO指的是通用的输入输出端口,可以由用户通过软件控制  ,GPIO引脚需要和外设进行连接,就可以和外设实现通道以及采集数据等功能.

定义

        指的是对芯片的某个引脚进行高低电平的输出  以及可以去检测某个引脚的状态 .

电平高于2.4V就表示高电平  低于0.4就表示低电平

引脚说明

查看英文数据手册

电源引脚        :VCC、VDD、VSS、VDDA、VSSA、VREF+等属于电源引脚

晶振引脚        :PC14、PC15、PH0、PH1就属于晶振引脚,也可以作为其他的功能使用

复位引脚        :NRST属于复位引脚

BOOT引脚      :BOOT0是专用引脚,BOOT1就属于功能引脚 (设置芯片的自举模式)

GPIO引脚       :芯片一共有144引脚,但是GPIO引脚有114个

下载引脚        :PA13、PA14、PB3、PB4等都属于下载引脚(JTAG、SWD)

引脚的功能查看英文数据手册

注意:带有FT的IO口 是带有保护二极管  ,可以容忍5V电压(芯片的标准电压为3.3V)

GPIO外设的使用

要用到外设我们需要查看原理图

GPIO外设的开发都是使用函数库来进行开发,我们以GPIOF9为例:

如图所示这是一个LED灯

我们要分析一下这个图

对于简单的外设 直接看原理图就行

  1. 根据函数库的接口进行开发    参考ST公司提供的函数库帮助手册(相当于man手册)

由于32基本不用写代码我们直接复制代码例程

GPIO的功能描述

GPIO寄存器开发

不管是图形界面还是函数库开发,本质都是对底层寄存器的使用,一般在实时性要求不高的情况,就使用前两种方式,但是对实时性要求比较高的情况下,就需要使用寄存器开发。所以就说明一下使用流程。

GPIO基地址

后面的模式都是查看数据手册

位操作符

~ | & ^ << >>

~ 取反 0变1 1变0

| 按位或 有1则1

1001 0110

1110 0010 -> 1111 0110

&按位与 有 0则0

1001 0110

1110 0010 -> 1000 0010

^按位异或 相同为0 不同为1

1001 0110

1110 0010 -> 0111 0100

<< 左移 高位舍去 低位补0 >>右移

时钟

HSE:  High Speed External  高速外部时钟   特点精度非常高

HSL:High Speed Internal   高速内部时钟  频率16MHZ  RC振荡器  特点成本低  精度低  易受温度影响

LSE: Low Speed External   低速外部时钟  频率32.768KHZ晶振  特点功耗低  精度高

LSI : Low Speed Internal  低速内部时钟    频率32KHZ振荡器  可以独立驱动看门狗   和 低功耗唤醒

 PLL (PLL)    倍频锁相环                由 HSE 或 HSI 振荡器提供时钟信号,  一般可以作为系统时钟使用

51和32时钟的区别 倍频 赫兹不一样     32多了PLL

程序运行的方式

1.轮询系统

是☞指在程序中写了一个死循环  需要运行的功能按照顺序执行   轮询系统是一种简单可靠的方式,一般适用于只需要按照顺序执行的并且没有外部事件的影响

int  main ()

{

        while(1)

        {

        }

}

2.前后台系统

相比于轮询系统增加了中断的概念  如果外部事件发生 则在中断进行处理  主程序在轮询系统中运行 中断被称为前台 主程序中的while(1) 就称为后台 中断会终止后台程序的运行 然后跳转到对应的服务函数处理  处理完成后 在继续执行后台的程序

3.多任务系统

相比于前后台系统,多任务系统的外部事件也是在中断中进行响应,但是外部事件的处理是任务中进行处理。任务具有优先级,优先级高的任务先处理,所以程序就会被分割为一个个的任务,任务是一个独立的死循环,并且不能返回,可以由操作系统进行任务的调度,程序段的实时响应能力又得到提升。

外部中断

中断是指CPU来处理和响应外部异常的发生 中断就意味着打断发生

中断源分析

Cortex-M4内核一共支持256个中断,其中有16个内核中断,240个外部中断,只不过对于STM32F407系列来说,只用到了一部分,包含了10个内核中断(不可屏蔽中断,无法通过软件进行控制)、82个外部中断(可屏蔽中断,可以通过软件进行控制)。    92个。

对于STM32而言 中断分为两类 内核异常 和外部异常  都可以查看下图

NVIC的概述

抢占优先级(主优先级):抢占优先级高的中断可以打断抢占优先级低的中断的执行。

响应优先级(次优先级):在同时发生多个中断的情况下,响应优先级高的先执行。

  1. 抢占优先级高的中断可以打断抢占优先级低的中断的执行
  2. 抢占优先级一样高的中断,响应优先级高的中断不可以打断响应优先级低的中断
  3. 抢占优先级一样高的中断,如果同时发生的情况下响应优先级高的先执行
  4. 抢占优先级和响应优先级一样高的中断同时发生,则按照向量表中的优先级执行

EXTI概述

EXTI指的是外部中断/事件控制器,一共有23个,每个都有一个内部的边沿检测器,可以检测上升沿或者下降沿,每根线都可以产生事件或者中断。

上升沿:指的是电平信号由低变高的那一刻

下降沿:指的是电平信号由高变低的那一刻

想要搞清楚EXTI的使用流程,必须要看懂EXTI的框图

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值