牛人的STM32学习笔记(寄存器版本)

一、GPIO口的配置

STM32的DGPIO口最多可以有7组(GPIOa~GPIOg),而每一组GPIO口均有16个双向IO组成。并且没个IO口均可配置成8种模式(4种输入模式,4种输出模式)。不管配置哪个IO口也不论将其配置成哪种模式(但是配置成哪种模式要看具体应用,参考《中文参考手册》第105页)都可以按以下步骤来进行配置:

使能PORTx(x=A~G)时钟

这里就得操作寄存器RCC_APB2ENR(32为寄存器)了

15141312111098ADC3ENUSART1ENTIM8ENSPI1ENTIM1ENADC2ENADC1ENIOPGEN76543210IOPFENIOPEENIOPDENIOPCENIOPBENIOPAEN保留AFIOEN3130292827262524CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6[1:0]2322212019181716CNF5[1:0]MODE5[1:0]CNF4[1:0]MODE4[1:0]15141312111098CNF3[1:0]MODE3[1:0]CNF2[1:0]MODE2[1:0]76543210CNF1[1:0]MODE1[1:0]CNF0[1:0]MODE0[1:0]

GPIOx_CRL(x=A~G(端口配置低寄存器x=A…E)

该寄存器用于配置GPIOx的低8位,具体8种模式的配置见《中文参考手册》例如: GPIOD->CRL&=0XFFFFF0FF;GPIOD->CRL|=0/PD.2推挽输出;其余IO口的低8位以此类推。

3130292827262524CNF15[1:0]MODE15[1:0]CNF14[1:0]MODE14[1:0]2322212019181716CNF13[1:0]MODE13[1:0]CNF12[1:0]MODE12[1:0]15141312111098CNF11[1:0]MODE11[1:0]CNF10[1:0]MODE10[1:0]76543210CNF9[1:0]MODE9[1:0]CNF8[1:0]MODE8[1:0]

GPIOx_CRH(端口配置高寄存器x=A…E)

该寄存器用于配置GPIOx的高8位,具体8种模式的配置见《中文参考手册》例如:

GPIOA->CRH&=0XFFFFFFF0;;GPIOA->CRH|=0//PA8 推挽输出;其余IO口的高8位以此类推。

端口的输入和输出电平配置

15141312111098IDR15IDR14IDR13IDR12IDR11IDR10IDR9IDR876543210IDR7IDR6IDR5IDR4IDR3IDR2IDR1IDR0

GPIOx_IDR(端口输入数据寄存器x=A…E)

该寄存器配置IO口的0~15位的输入数据,以16位读出。

15141312111098ODR15ODR14ODR13ODR12ODR11ODR10ODR9ODR876543210ODR7ODR6ODR5ODR4ODR3ODR2ODR1ODR0

GPIOx_ODR(端口输出数据寄存器x=A…E)

该寄存器配置IO口的0~15位的输入初始状态,例如:GPIOA->ODR|=1<<13;//PA13上拉输入

一般GPIO口配置可仿以下两个程序:

void KEY_Init(void)

{

RCC->APB2ENR|=1<<2; //使能PORTA时钟

GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入

GPIOA->CRL|=0

GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入

GPIOA->CRH|=0

GPIOA->ODR|=1<<13; /

crh寄存器_牛人的STM32学习笔记(寄存器版本).doc相关推荐

  1. SPI 读取不同长度 寄存器_敏矽微电子Cortex-M0学习笔记10-SPI通信详解

    1.SPI简介 ME32F030支持扩展的 SPI (Serial Peripheral interface)接口,它可以支持标准的 SPI 操作,兼容 4 线的 SSI (SynchronousSe ...

  2. 嵌入式学习笔记——寄存器实现控制LED小灯

    文章目录 前言 GPIO通用输出模式 初始化LED小灯的GPIO 原理图 初始化代码 初始化的效果 功能函数封装 直接分开宏定义两个 使用条件运算符 封装函数实现简单的功能 KEIL MDK一些技巧 ...

  3. 《STM32学习笔记》4——核心功能电路与编程(下)

    接上文,文中的图片,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.蜂鸣器驱动 1.蜂鸣器介绍 2.蜂鸣器电路 3.蜂鸣器程序 二. MIDI 音乐 ...

  4. STM32学习笔记 | 引起电源和系统异常复位的原因

    关注+星标公众号,不错过精彩内容 每一块处理器都有复位的功能,不同处理器复位的类型可能有差异,引起复位的原因也可能有多种. STM32的复位功能非常强大,可通过软件.硬件和一些事件触发系统复位,而且通 ...

  5. STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)

    本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...

  6. STM32学习笔记(六)丨TIM定时器及其应用(输入捕获丨测量PWM波形的频率和占空比)

    本篇文章包含的内容 一.输入捕获 1.1 输入捕获简介 1.2 输入捕获通道的工作原理 1.3 输入捕获的主从触发模式 1.4 输入捕获和PWMI结构 二.频率的测量方法 2.1 测频法 2.2 测周 ...

  7. STM32学习笔记(15)——SPI协议

    STM32学习笔记(15)--SPI协议 一.SPI协议简介 1. 物理层 2. 协议层 (1) 通讯的开始与停止 (2)时钟极性CPOL.时钟相位CPHA 二.STM32的SPI外设 1. 通讯引脚 ...

  8. STM32学习笔记(13)——模数转换ADC

    这个月一直忙于准备考试,已经考完一半科目了,偷闲写了这篇文章.因为还没考完试,估计还得咕一段时间了. STM32学习笔记(13)--模数转换ADC 第一部分:ADC功能框图 一.输入电压 二.输入通道 ...

  9. STM32学习笔记(八)丨ADC模数转换器(ADC单、双通道转换)

    本篇文章包含的内容 一.ADC 模数转换器 1.1 ADC简介 1.2 逐次逼近型ADC工作原理 1.3 STM32中的ADC基本结构 1.4 STM32中ADC的输入通道 1.5 STM32中的AD ...

最新文章

  1. 只有20%的iOS程序员能看懂:详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance
  2. 只此一招,全屏操作从此易如反掌
  3. LinkedHashMap源码剖析
  4. python安装第三方库win10_在win里anaconda怎么安装第三方的库
  5. WordPress网站搬家教程(根目录程序+ MySQL数据库)
  6. 开关灯(信息学奥赛一本通-T1109)
  7. 如何编写杂项设备驱动
  8. servlet container:tomcat jetty and undertow
  9. Java安全的发布对象
  10. 计算机主机电源灯不亮,电脑电源指示灯不亮怎么回事
  11. _beginthread 和 CreateThread 区别
  12. 综合评价模型的缺点_综合评价方法这么多,我该怎么选
  13. NOTEXPRESS 链接文件夹——让题录在文件夹中共享
  14. 组网 三层交换机配置
  15. 查询快递单号物流,自动识别出物流是否签收
  16. 报错 AttributeError: ‘scipy.spatial.transform._rotation.Rotation‘ object has no attribute ‘as_dcm‘
  17. OA和BPM有什么区别?企业应该如何选型
  18. 名帖109 鲜于枢 小楷《老子道德经卷》
  19. uni-app开发的微信小程序隐藏返回首页按钮
  20. 遥感影像去背景 之 数据裁剪

热门文章

  1. 以梦为马,越骑越傻。诗和远方,越走越慌
  2. 蓝桥杯刷题日记 更新到2022/2/5
  3. Sql server AlwaysOn搭建常见问题
  4. [SugerTangYL] 简易电子时钟Verilog设计
  5. 【解决方法】友盟分享 已安装QQ,但总提示“没有安装手机QQ客户端”
  6. ❤️交房步骤和注意事项❤️
  7. ACM常用英文术语翻译
  8. LVTTL与LVCMOS区别
  9. 疲劳驾驶数据集_Lyft开源L5自动驾驶数据集:55000个人工标注的3D注释框架,还有高清空间语义地图...
  10. 时间在一分一秒的流逝着