IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 初出茅庐的小李第85篇博客之STM32寄存器操作模板编写 -> 正文阅读

[嵌入式]初出茅庐的小李第85篇博客之STM32寄存器操作模板编写

操作寄存器有

#1.GPIO  端口模式寄存器      (GPIOx_MODER)   (x = A..I)
#2.GPIO  端口输出类型寄存器  (GPIOx_OTYPER)  (x = A..I)
#3.GPIO  端口输出速度寄存器  (GPIOx_OSPEEDR) (x = A..I)
#4.GPIO  端口上拉/下拉寄存器 (GPIOx_PUPDR)   (x = A..I)
#5.GPIO  端口输入数据寄存器  (GPIOx_IDR)     (x = A..I)
#6.GPIO  端口输出数据寄存器  (GPIOx_ODR)     (x = A..I)
#7.GPIO  端口置位/复位寄存器 (GPIOx_BSRR)    (x = A..I)
#8.GPIO  端口配置锁定寄存器  (GPIOx_LCKR)    (x = A..I)
#9.GPIO  复用功能低位寄存器  (GPIOx_AFRL)    (x = A..I)
#10.GPIO 复用功能高位寄存器  (GPIOx_AFRH)    (x = A..I)

操作方法如下

/*
*******************************************************/
/*00:输入模式(复位状态) */
GPIOx->MODER   &= ~(0x3<<(2*PIN_NUM));
GPIOx->MODER   |=  (0x0<<(2*PIN_NUM));

/*01:通用输出模式*/
GPIOx->MODER   &= ~(0x3<<(2*PIN_NUM));
GPIOx->MODER   |=  (0x1<<(2*PIN_NUM));

/*10:复用功能模式*/
GPIOx->MODER   &= ~(0x3<<(2*PIN_NUM));
GPIOx->MODER   |=  (0x2<<(2*PIN_NUM));

/*11:模拟模式*/
GPIOx->MODER   &= ~(0x3<<(2*PIN_NUM));
GPIOx->MODER   |=  (0x3<<(2*PIN_NUM));


/*0:输出推挽(复位状态)*/
GPIOx->OTYPER  &= ~(0x1<<(PIN_NUM));
GPIOx->OTYPER  |=  (0x0<<(PIN_NUM));

/*1:输出开漏*/
GPIOx->OTYPER  &= ~(0x1<<(PIN_NUM));
GPIOx->OTYPER  |=  (0x0<<(PIN_NUM));


 


/*00:2 MHz(低速) */
GPIOx->OSPEEDR &= ~(0x3<<(2*PIN_NUM));
GPIOx->OSPEEDR |=  (0x0<<(2*PIN_NUM));
/*01:25 MHz(中速)*/
GPIOx->OSPEEDR &= ~(0x3<<(2*PIN_NUM));
GPIOx->OSPEEDR |=  (0x1<<(2*PIN_NUM));
/*10:50 MHz(快速) */
GPIOx->OSPEEDR &= ~(0x3<<(2*PIN_NUM));
GPIOx->OSPEEDR |=  (0x2<<(2*PIN_NUM));
/*11:30 pF 时为 100 MHz(高速)(15 pF 时为 80 MHz 输出(最大速度))*/
GPIOx->OSPEEDR &= ~(0x3<<(2*PIN_NUM));
GPIOx->OSPEEDR |=  (0x3<<(2*PIN_NUM));






/*00:无上拉或下拉 */
GPIOx->PUPDR   &= ~(0x3<<(2*PIN_NUM));
GPIOx->PUPDR   |=  (0x0<<(2*PIN_NUM));
/*01:上拉 */
GPIOx->PUPDR   &= ~(0x3<<(2*PIN_NUM));
GPIOx->PUPDR   |=  (0x1<<(2*PIN_NUM));
/*10:下拉 */
GPIOx->PUPDR   &= ~(0x3<<(2*PIN_NUM));
GPIOx->PUPDR   |=  (0x2<<(2*PIN_NUM));


/*测试输入寄存器值是否为1*/
((GPIOx->IDR&(0x1<<PIN_NUM))>>PIN_NUM))
/*复位输出寄存器值使其为0*/
GPIOx->ODR     &= ~(0x1<<PIN_NUM);
GPIOx->ODR     |=  (0x0<<PIN_NUM);
/*置位输出寄存器值使其为1*/
GPIOx->ODR     &= ~(0x1<<PIN_NUM);
GPIOx->ODR     |=  (0x1<<PIN_NUM);


/*1:对相应的 ODRx 位进行复位*/
GPIOx->BSRR    &= ~(0x1<<(16+PIN_NUM));
GPIOx->BSRR    |=  (0x1<<(16+PIN_NUM));

/*1:对相应的 ODRx 位进行置位*/
GPIOx->BSRR    &= ~(0x1<<PIN_NUM);
GPIOx->BSRR    |=  (0x1<<PIN_NUM);



/*0:端口配置锁定键未激活。*/ 
GPIOx->AFRL    &= ~(0x1<<16);
GPIOx->AFRH    &=  (0x0<<16);
/*1:端口配置锁定键已激活。直到 MCU 复位时,才锁定 GPIOx_LCKR 寄存器*/
GPIOx->LCKR    &= ~(0x1<<16);
GPIOx->LCKR    |=  (0x1<<16);

/*端口 x 的复用功能选择  (PIN_NUM = 0..7) AF_NUM = (0000 - 1111)*/
GPIOx->AFRL    &= ~(0xf<<(4*PIN_NUM));
GPIOx->AFRL    |=  ((AF_NUM)<<(4*PIN_NUM));

/*端口 x 的复用功能选择  (PIN_NUM = 8..15) AF_NUM = (0000 - 1111)*/
GPIOx->AFRH    &= ~(0xf<<(4*(PIN_NUM-8)));
GPIOx->AFRH    |=  ((AF_NUM)<<(4*(PIN_NUM-8)));

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:06:46  更:2021-11-24 08:08:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:26:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码