STM32控制器位带操作详解_第1页
STM32控制器位带操作详解_第2页
STM32控制器位带操作详解_第3页
STM32控制器位带操作详解_第4页
STM32控制器位带操作详解_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、STM32控制器位带操作,STM32控制器与8051控制器IO口输入/输出操作对比,#include “reg51.h” sbit P20= P20; void main(void) while(1) P20 = 1; delay(); P20 = 0; delay(); ,#include “stm32f10 x.h” sbit P20= P20; void main(void) while(1) GPIOB-BSRR|=1BRR|=15; delay(); ,BSRR寄存器,BRR寄存器,8051单片机的P2口寄存器,STM32控制器与8051控制器IO口输入/输出操作对比,#includ

2、e “reg51.h” sbit P20= P20; void main(void) while(1) P2 |= 0 x01; delay(); P20 ,#include “stm32f10 x.h” sbit P20= P20; void main(void) while(1) GPIOB-BSRR|=1BRR|=15; delay(); ,8051单片机的位寻址区,表2-3,STM32位带区之一,STM32位带区之二,STM32存储器映射关系,教材26页 图2-10 CM3存储器组织,位带区,位别名区,位带区,位别名区,STM32 位带绑定操作示意图,STM32 位带绑定操作 计算公式

3、,注释(对于位带区的某个bit,上图红色圈中的bit) n:所代表的位序号(0n7)。例如上图中n=3 A:该bit所在的字节地址。例如上图中A=0 x2000 0000 (0 x20000000A0 x200FFFFF或0 x20000000A0 x200FFFFF ) AliasAddr:该bit在别名区的地址。例如上图AliasAddr=0 x2200000C,STM32 位带绑定操作 程序设计,举例:在SRAM的0 x20004000地址定义一个长度为512字节的数组: #pragma location =0 x20004000 _root _no_init u8 Buffer512;

4、 GPIOA的端口输出数据寄存器位于地址0 x4001080C。 要求:将数组中数据通过GPIOA.0引脚送出 分析: 数组首字节的bit0对应的位别名区地址为: 0 x22000000+(0 x20004000-0 x20000000)32)+(04)=0 x22080000 GPIOA.0控制其输出电平的bit位所对应的别名区地址为: 0 x42000000+(0 x4001080C-0 x40000000)32)+(04)=0 x42210180,u32 *pBuffer=(u32 *)0 x22080000; u16 cnt= 512 * 8; while(cnt-) (*(u32 *

5、)0 x42210180)=*pBuffer+; ,STM32 位带绑定操作方法归纳,1 指针、地址与取指针操作 #define PD12 (volatile unsigned long *)(0 x424182b0) /0 x424182b0为GPIOD.12引脚对应的映射位别名地址 *PD12=0 x01;/PD12引脚置高电平 2 直接定义使用地址操作 #define PD12 *(volatile unsigned long *)(0 x424182b0) /0 x424182b0为GPIOD.12引脚对应的映射位别名地址 PD12=0 x01;/PD12引脚置高电平 3 宏定义,转换

6、别名操作 使用:VIEW_TIME=1; VIEW_TIME=0;/GPIOA.10引脚 输出1或者0 分析: #define VIEW_TIME PAout(10) #define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) /输出 #define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) /输入 #define GPIOA_ODR_Addr (GPIOA_BASE+12) /0 x4001080C #define GPIOA_BASE (APB2PERIPH_BASE + 0 x0800) #define APB2PERIPH_BASE (PERIPH_BASE + 0 x10000) #define PERIPH_BASE (uint32_t)0 x40000000) #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum) #define MEM_ADDR(addr) *(volatile unsigned long *)(addr) #define BITBAND(addr, bitnum) (addr & 0 xF0000000)+0 x2000000+(addr &0 xFFFFF)5)+(bitnum2),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论