IO 口的位操作实现
一、概念
二、代码
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((
addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
//IO 口地址映射
#define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C
#define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C
#define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C
#define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C
#define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C
#define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C
#define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C
#define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808
#define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08
#define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008
#define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408
#define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808
#define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08
#define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08
//IO 口操作,只对单一的 IO 口!
//确保 n 的值小于 16!
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出
#define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入
#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出
#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入
#define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出
ALIENTEK MiniSTM32 V3.0 开发板教程
114
STM32 不完全手册(库函数版)
#define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入
#define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出
#define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入
#define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //输出
#define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //输入
#define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //输出
#define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //输入
#define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //输出
#define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //输入
//0,不支持 ucos 1,支持 ucos
#define SYSTEM_SUPPORT_OS 0 //定义系统文件夹是否支持 UCOS
IO 口的位操作实现相关推荐
- I/0口输入输出实验 学习IO口的位操作方法,分别选择P0、P1、P2、P3端口中的某一位,该位作为输出使用,连接一只发光二极管,控制器闪烁。
学习IO口的位操作方法,分别选择P0.P1.P2.P3端口中的某一位,该位作为输出使用,连接一只发光二极管,控制器闪烁. 程序: #include<reg51.h> sbit KEY=P1 ...
- 【转载】瑞萨CS+ for CC对单片机IO口进行位操作
出处:https://www.sekorm.com/news/25653139.html 瑞萨科技是世界十大半导体芯片供应商之一,在汽车领域的MCU市场份额更是排在最前列.近日笔者碰到刚接手瑞萨MCU ...
- 51单片机STC89C52点亮一个LED(IO口的位操作)
51单片机点亮一个LED(IO口的位操作)STC89C52 程序源码 /*-----------------------包含头文件区域-------------------------*/ #incl ...
- c语言 不同的io口组成数组,本章内容并行IO口电路结构认识C语言C语言基本语句C语.ppt...
本章内容并行IO口电路结构认识C语言C语言基本语句C语 并行I/O口电路结构 P0口的结构 P0口的结构 P0口的结构 P1口的结构 P1口的结构 P2口的结构 P2口的结构 P3口的结构 P3口的结 ...
- 51单片机开发入门(3)-IO口应用
前言 根据前面对51单片机的了解和基础理论知识的掌握,接下来就正式进入单片机开发--实践.引用最近几天追的电视剧<觉醒年代>里新文化领袖陈独秀.李大钊等革命前辈们一直在说的和在践行的马克思 ...
- 树莓派底层IO驱动开发示例(一个简单io口驱动的开发)
一.驱动代码的开发 1.树莓派寄存器的介绍 点击查看:树莓派(bcm2835芯片手册) GPFSEL0 GPIO Function Select 0: 功能选择 输入/输出 GPSET0 GPIO P ...
- c语言io口置1,AVR_C语言编程的小技巧-IO口置位.doc
AVR C语言编程的小技巧-IO口置位 给单片机IO口置位是编程用的比较多的操作,这是我在学习C语言编程中的一点小小心得,希望大家觉得有用!AVR 单片机的IO口是标准的双向端口,首先要设置IO口的状 ...
- 2、SONIX单片机IO口基本操作
IO口基本操作,sonix单片机每个IO口都有两个钳位保护二极管 一.IO口方向设置寄存器PnM,n代表0-5组IO口 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 ...
- STM32笔记 GPIO介绍及IO口操作 STM32F0 利用C语言位域实现仿位带操作
文章目录 GPIO简介 工作方式 相关寄存器介绍 IO 操作步骤 IO口三种操作细解 附录:C语言相关 偏移地址与绝对地址 GPIO简介 GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集, ...
最新文章
- 回应关于《BCH五月硬分叉是伪需求》的疑问
- Unity 2D游戏开发教程之精灵的死亡和重生
- Mac OS Terminal 几个快捷键
- Linux系统检测命令有哪些
- list修改元素的值_第115天:Python 到底是值传递还是引用传递
- java 内存泄漏_Java开发者必须知道的内存泄漏问题
- python多进程的使用方法
- 第三次学JAVA再学不好就吃翔(part35)--多态向上转型和向下转型
- python 打包exe thread报错_pyinstaller 打包exe 遇到的坑
- 计算机应用基础形考作业3Excel,国家开放大学《计算机应用基础》考试与答案形考任务模块3 模块3 Excel 电子表格系统—客观题答案(2020年整理).pptx...
- 还在4S店买车?《Boss1+1》张朝阳对话贾鸣镝“种草”购车新方式
- 到底什么是 ROI Pooling Layer ???
- VMware 虚拟机如何连接网络,且远程可连接
- Javascript对象扩展 - JsPoint类
- ​专科生学习云计算就业前景如何?
- PHP中的PEAR是什么?
- VR全景有什么应用,和传统摄影的区别,发展前景如何?
- 小米总监汇总的几点软件测试方法~
- wps将批量数字转换成条形码_excel表格怎么把数据转换条形码-WPS表格中怎么把数字还原成条形码,本来是条形码的。...
- WPS JS宏示例——工作表排序