观看的视频:野火-视频链接  https://www.bilibili.com/video/BV18X4y1M763

什么是GPIO?

GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

可以通过控制GPIO引脚的电平变化,达到正常使用的目的。

寄存器编程 要学会使用STM32使用手册和数据手册。

STM32F103ZET6结构图:

F103GPIO的内部结构图:

TTL肖特基触发器:将连续的信号变为离散的信号。

LED灯原理图:

keil环境配置步骤:

1.新建一个工程,找到对应的开发版芯片。此次使用的是STM32F103ZET6。

2.配置keil setting 见图片

3.在Source Group 里面添加一个主程序,main.c文件。双击Source Group即可配置。

4.配置C语言运行环境。

5.编写一个main函数。

int main(void){}

点击编译无错误。

总线架构:总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。

总线组织形式的优势:通过总线的形式,可以很好地将各种外设分离开,可以独立的将各种外设来控制它的使能与否。

时钟:通过控制时钟,来控制外设使能与否。没有外设时钟,就相当于失能。控制时钟就是控制外设。

软件开发步骤:

1. 根据此开发板的LED原理图了解到要控制PB5和PE5,使能GPIOB和GPIOE的外设时钟。使能外设时钟:知道寄存器的地址——APB2外设时钟使能寄存器地址。

RCC(复位和时钟控制)外设基地址:0x4002 1000

偏移地址:0x18

APB2外设时钟使能寄存器地址=起始地址+偏移地址。

2.选择输出模式,并查阅手册进行端口配置

LED需要设置的工作模式是输出模式。有开漏输出和推挽输出。对于开漏输出,输出一个高电平比较麻烦,选用推挽输出。

通过配置表头的寄存器可以配置推挽输出。

GPIOB外设基地址:0x4001 0C00

端口配置低寄存器(CRL)偏移地址:0x00

端口输出数据寄存器(ODR)偏移地址:0x0C

#define GPIOB_CLK (*(volatile unsigned int *)(0x40021000+0x18))
#define GPIOB_CRL (*(volatile unsigned int *)(0x40010C00))
#define GPIOB_ODC (*(volatile unsigned int *)(0x40010C00+0x0C))
int main(void)
{//1.使能GPIOB外设时钟GPIOB_CLK |=(1<<3);//2.GPIOB配置推挽输出模式GPIOB_CRL &=~(0xf<<(4*5));//清除低四位寄存器GPIOB_CRL |=(2<<(4*5));GPIOB_ODC &=~(0x1<<(1*5));//清除低1位寄存器GPIOB_ODC |=(1<<5);}

通过注释GPIOB_ODC |=(1<<5);这行代码,可以使灯亮起。

圈2中选择自己的调试器。

STM32编程方式存在寄存器编程和库编程两种,寄存器编程存在以下缺点:1、代码可读性太差,如果是一大堆寄存器的编程代码,不写注释,很难读懂;2、二次开发难度大;3、每次写程序都要查手册。

当熟练运用后,可以将寄存器编程和库编程组合起来使用。

【学习记录】野火stm32学习记录(一)GPIO相关推荐

  1. 野火STM32学习笔记

    开始进入固件库编程 学习原因即优缺点 固件库的出现让STM32的开发难度大大下降,它通过库文件的封装,把众多的内存元整合为一个整体,在我们想要操作某一位寄存器时只要调用它所在的固件库就可以.缺点是不同 ...

  2. 野火STM32学习笔记一、固件库文件分析

    STM32固件库文件分析 汇编编写的启动文件 startup_stm32f10x_hd.s: 设置堆栈指针.设置PC指针.初始化中断向量表.配置系统时钟.调用C库函数main最终去到C的世界 时钟配置 ...

  3. 野火STM32学习(7)

    编写GPIO初始化结构体和初始化函数 stm32f4xx_gpio.h /* 端口模式 */ typedef enum{GPIO_Mode_IN = 0x00,GPIO_Mode_OUT = 0x01 ...

  4. 野火STM32学习(6)

    编写置位/复位函数 #ifndef __STM32F4XX_GPIO_H #define __STM32F4XX_GPIO_H#include "stm32f4xx.h"#defi ...

  5. stm32单片机c语言入门 pdf,STM32学习笔记(初学者快速入门).pdf

    STM32 学习笔记 从51 开始,单片机玩了很长时间了,有51,PIC,AVR 等等,早就想跟潮 流玩玩ARM ,但一直没有开始,原因不知道玩了ARM 可以做什么(对我自 己而言).如果为学习而学习 ...

  6. STM32学习之使用TFTLCD

    前言 终于到了代码部分, 前边的所有知识铺垫都是为了这部分的代码,能得心应手,其实我个人认为,原子哥的驱动代码已经写的很好很完善了,所以这部分主要是学习原子哥的代码怎么用,我手里刚好也有一个 原子哥 ...

  7. STM32学习之TFTLCD

    前言 之前的STM32博客学习了从0新建工程,C语言知识复习,总线时钟等基础知识,现在根据手册开始正式的开发项目,本篇博客主要是理解文档中的TFTLCD部分的学习 学习资料来自:STM32F407最小 ...

  8. STM32学习之FSMC

    前言 上一篇介绍了TFTLCD的基础知识,这一篇来看看,FSMC的基本原理. 学习资料来自:STM32F407最小系统板开发指南-库函数版本_V1.1.pdf 正点原子,感谢原子哥的开源奉献 正点原子 ...

  9. STM32学习记录——烟雾传感器的使用

    文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 总结 前言 这次记录一下烟雾传感器的学习,由于烟雾传感器的资料比较杂,算法比较多,对我来说也比较难,所以我的代码中算法部分是不太具有参考价值, ...

最新文章

  1. 如何区分abcd类地址_IP地址中A类、B类、C类地址的区别
  2. 【数据结构】哈夫曼树与哈夫曼编码
  3. 树形dp-CF-337D. Book of Evil
  4. android 自定义listview 多列,android listview的多列模版实例代码
  5. Spark Mllib里相似度度量(基于余弦相似度计算不同用户之间相似性)(图文详解)...
  6. oracle数据库应用中实现汉字“同音”查询(转)
  7. iOS的音频文件的格式转换
  8. 一、Java编程环境
  9. RS232串口接线图
  10. 微信双开方法windows Mac iOS
  11. WiFi偏门协议(四):增强的传输机制802.11aa
  12. 计算机程序员简历基本技能,应聘程序员的十大必备技能
  13. Oracle 几种更新(Update语句)查询的方法
  14. 用 Bitcron 搭博客:你只管写作,它负责呈现
  15. 这些管理学定律你知多少?
  16. 个人解决win7未识别的网络
  17. 蓝海卓越计费管理系统 debug.php 远程命令执行漏洞
  18. 常用JavaScript库
  19. 目前所有的ANN神经网络算法大全
  20. Qt+webservice的多线程实现

热门文章

  1. 渠道二维码怎么做效果溯源
  2. 67.220.90.12/bbs/index.php,对乌云漏洞库的分析.md
  3. 【WebGIS全栈】从0到1开发整站——旅游足迹地图网站
  4. 天空中的云怎么画?云雾、天空云彩的绘画技巧
  5. 用CDN的小伙伴注意了 小心阿里云注销你的备案
  6. Qt学习笔记(三)——记事本
  7. [附源码]Java计算机毕业设计SSM高校互联网班级管理系统
  8. 以可信度加权的方式做决定
  9. 使用ScanCode扫描开源项目的license
  10. html转图片并解决模糊问题