当前位置: 首页 > news >正文

【单片机程序】详解IO输入输出方向设置寄存器写法程序来自定义更换引脚与迁移参考程序到工程的流程

前言:详解IO输入输出方向设置寄存器写法程序来自定义更换引脚与迁移参考程序到工程的流程介绍。

目录

 1.IO输入输出方向设置程序(寄存器写法)

2.迁移参考程序到工程


 1.IO输入输出方向设置程序(寄存器写法)

如下俩行程序为IO输入输出方向设置程序,寄存器写法,接下来讲解如何来自定义更换引脚。

//IO方向设置   PA11  寄存器写法
#define DHT11_IO_IN()  {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=8<<12;}
#define DHT11_IO_OUT() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=3<<12;} 

首先打开STM32F10XXX参考手册

在8.2节有CRH和CRL寄存器的描述

CRH和CRL的区别就是CNFy的值,(GPIO端口是有16个位,引脚O-15)

CRL是引脚0-7,CRH是引脚8-15

本节的使用的引脚是PA11是属于CRH,因此以PA11引脚来举例如何编写这两行程序。

因此打开到8.2.2节端口配置高寄存器(GPIOx_CRH) (x=A..E)

首先看下面有两个框,一个是CNFy[1:0],另一个是MODEy[1:0],分别对应上面的寄存器位。

 

PA11引脚对应的寄存器就是15:12

这个12就是下面程序中的12出处。

//IO方向设置   PA11  寄存器写法
#define DHT11_IO_IN()  {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=8<<12;}
#define DHT11_IO_OUT() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=3<<12;} 

第一行程序,这个8就是二进制的1000,也就是如下图所示 设置为上拉/下拉输入模式,输入模式(复位后的状态)

//IO方向设置   PA11  寄存器写法
#define DHT11_IO_IN()  {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=8<<12;}

 接下来就是这个程序中的3,也就是二进制0011,对应设置为通用推挽输出模式,输出模式,最大速度50MHz

#define DHT11_IO_OUT() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=3<<12;} 

然后就是这两行程序中的0XFFFF0FFF,这个0就是将15:12位清零,其它位全为1。

需要注意,代码的&=是用来清零的,|=是用来置位的

//IO方向设置   PA11  寄存器写法
#define DHT11_IO_IN()  {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=8<<12;}
#define DHT11_IO_OUT() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=3<<12;} 

 

然后就是程序中的GPIOA可以根据你想自定义的引脚端口号来改就行。

程序中的左移<<,就是要将这四位左移到对应的位置,进而实现寄存器操作。

2.迁移参考程序到工程

        接下来介绍一下,在迁移程序时的流程。也就是在有参考程序的情况下,如何迁移到自己的工程里。

首先复制参考程序文件夹到自己的工程文件夹中。

然后点击文件管理,添加刚刚复制的文件夹里的.C文件,ADD File

然后就可以看到在自己的工程里出现刚刚复制过来的参考程序。 

然后点击魔术棒,点击C/C++,添加这个复制过来的程序文件路径。


http://www.mrgr.cn/news/69194.html

相关文章:

  • 低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络
  • WPF中MVVM工具包 CommunityToolkit.Mvvm
  • DVWA靶场通关——SQL Injection篇
  • css 溢出隐藏显示省略号
  • 计算机视觉 ---常见图像文件格式及其特点
  • 打造透明、高效的分布式系统:通过 EMQX ECP 集成实现链路追踪功能
  • Google SERP API 对接说明
  • 2.索引:SQL 性能分析详解
  • 公司文件防止泄密的方式(如何防止技术泄密)?5个防泄密措施,请谨记!
  • 操作系统(11) (POSIX--Linux线程编程---Mutex互斥锁语法应用)
  • 临床检验方法与仪器 第一部分作业:光谱分析仪器与技术的总结与归纳+新型光谱仪的调研
  • Python学习从0到1 day26 第三阶段 Spark ① 数据输入
  • 在Rocky Linux 9上快速安装Nginx
  • Docker基础(一)
  • 深度学习基础—了解词嵌入
  • 基于Video-ReTalking的AI数字人模型部署
  • CSS-盒模型
  • Linux——入门
  • 拓扑排序(C++类封装+数组模拟队列和邻接表)
  • of 操作函数——获取设备树节点
  • 概念井喷时代:什么样的产品才是真正的云产品?哪一些在浑水摸鱼
  • JS 循环语句
  • sql注入绕过,超详细!!
  • 力扣题库——75.颜色分类
  • 计算结构加法3+2
  • java.lang.NoClassDefFoundError: org/springframework/aot/AotDetector问题解决