zoukankan      html  css  js  c++  java
  • stm32之CMSIS标准、库目录、GPIO

    一、CMSIS标准

      ST公司的stm32采用的是cortex-m3内核,内核是整个微处理器的CPU。该内核是ARM公司设计的一种处理器体系架构。内核与外设的关系就像PC上的CPU与硬盘、主板、内存等的关系一样。

    基于cortex系列的处理器内核都是一样的,区别在于除内核以外的外设的差异,由于这些差异,导致不同处理器移植起来比较麻烦,所以ARM与芯片厂商建立了CMSIS标准,CMSIS架构如下所示:

      CMSIS标准中最主要的是CMSIS核心层;内核函数层中的内核函数寄存器以及地址主要由ARM公司提供;设备外设访问层核外外设和中断寄存器地址由芯片生产厂商定义。

    二、库目录和文件简介

    1、core_cm3.c文件

      在CoreSupport文件夹中有core_cm3.c和头文件core_cm3.h,它的作用是采用Cortex-M3内核设计的SoC芯片厂商设计的芯片提供了一个进入CM3内核的接口。core_cm3.c中还有一些与编译器(MDK、IAR等)有关的代码。较重要的是core_cm3.c中包含stdio.h头文件,这是一个ANSI C文件,主要作用是提供一些新类型的定义。

    2、system_stm32f10x.c文件

      DeviceSupport文件夹下是启动文件、外设寄存器定义、中断向量定义层的一些文件,这些文件由ST公司提供。system_stm32f10x.c的主要作用是设置系统时钟和总线时钟。

    3、stm32f10x.h文件

      这个文件非常重要,是非常底层的文件,包含了寄存器地址和结构体类型的定义,在使用到stm32固件库的地方都要包含它。

    3、stm32f10x_it.c和stm32f10x_conf.h文件

      stm32f10x_it.c这个文件主要是编写中断程序的,stm32f10x_conf.h被包含在stm32f10x.h文件中主要是配置外设的头文件,我们需要什么在这里打开。

    4、startup_stm32f10x_hd.s文件

      在这个文件中有一段启动文件,启动文件中先初始化系统时钟,然后才执行主函数,因此我们要注意配置时钟在这个文件里配置。

    三、引脚端口的一些概念

    1、一些寄存器

      1)配置寄存器:选择是输入还是输出。

      2)数据寄存器:保存了GPIO的输入电平或者将要输出的电平。

      3)为空值寄存器:设置引脚电平为1或0,控制输出电平。

      4)锁定寄存器:设置锁定引脚后,就不能修改其配置。

    2、管脚时钟

      stm32拥有丰富的时钟系统,我们在配置管教时钟时,如果该管脚要用到其复用功能,我们必须也要初始化复用功能时钟。例如要使用PC1口的AD功能:

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);

    3、GPIO8种工作模式

      1)四种输入模式:上拉输入模式、下拉输入模式、浮空输入模式、模拟输入模式

      上拉输入模式(GPIO_Mode_IPU):与VDD相连的为上拉电阻,若引脚配置为上拉输入模式,默认情况下该引脚是高电平。

      下拉输入模式(GPIO_Mode_IPD):与VSS相连的为下拉电阻,若引脚配置为下拉输入模式,默认情况下该引脚是低电平。

      浮空输入模式(GPIO_Mode_IN_FLOATING):没有上拉电阻也没有下拉电阻,一般这种模式用于标准的通信协议:IIC、USART等的接收端。

      模拟输入模式(GPIO_Mode_AIN):使用ADC外设时,接口必须设置为,模拟输入模式。

      2)四种输出模式:推挽输出模式、开漏输出模式、复用推挽输出模式、复用开漏输出模式

      推挽输出模式(GPIO_Mode_Out_PP):一般用于0和3.3伏的场合。

      开漏输出模式(GPIO_Mode_Out_OD):一般用于电平不平衡的场合。

      任何一种开漏模式都要接上拉电阻。

      复用推挽输出模式(GPIO_Mode_AF_PP)

      复用开漏输出模式(GPIO_Mode_AF_OD)

    4、中断

      stm32有100个引脚,GPIO口总共80个,分为GPIOA~GPIOE 5组,每组16个。每个IO口都可以作为中断源的输入,可以配置为上升沿中断,下降沿中断,上升沿下降沿中断

  • 相关阅读:
    团队十日冲刺1
    第八周学习进度
    人月神话阅读笔记02
    课堂练习-顶会热词统计
    第七周学习进度
    《vim — vimrc的设置》
    《开发板 — 调试串口》
    《网络编程 — 127.0.0.1的作用》
    《网络编程 — INADDR_ANY的含义》
    《开发板 — 上查看串口信息》
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/10740958.html
Copyright © 2011-2022 走看看