600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > MCU 如何控制外设

MCU 如何控制外设

时间:2021-01-13 18:15:54

相关推荐

MCU 如何控制外设

单片机如何控制外设

单片机不是直接控制外设的,而是通过配置片上外设寄存器来控制其输出和检测高低电平,进而控制外围器件

单片机如何配置寄存器的?

下图是单片机驱动 点亮发光二极管

内核从flash里面加载读取指令。内核根据指令到SRAM里面对应的地址读取数据,这些数据就是即将赋值给GPIO片上外设寄存器里的数据。内核通过总线对GPIO寄存器赋值。如果寄存器某一位为零,那么对应的IO口对应的一些开关电路就会输出低电平。LED另一端接高电平时,LED就会点亮。

单片机是如何找到寄存器的?

每个寄存器都有对应的地址,单片机通过地址访问寄存器,ARM寻址范围4GB(2的32次方=4G byte),分为多个块,片上外设对应的地址范围是0x4000 0000-0x6000 0000。

C程序是如何实现访问寄存器的?

C程序通过指针访问寄存器,这也是指针嵌入式开发中的一个典型应用。

//访问GPIOG这一组IO口contrl0寄存器,赋值0xFFFFFFFF#define APB2_BUS_BASE ((uint32_t)0x40010000U)#define GPIO_BASE (APB2_BUS_BASE + 0x00000800U)#define GPIOG(GPIO_BASE + 0x00001800U) //先定义GPIOG基地址,通过计算是0x40012000#define GPIO_CTL0(gpiox)REG32((gpiox) + 0x00U)//再找到GPIO control 0 的寄存器地址, 就是在GPIOG的基础上,再加一个偏移地址。#define REG32(addr)(*(volatile uint32_t*)(uint32_t)(addr))GPIO_CTL0(GPIOG) = 0xFFFFFFFF;//展开上面这条赋值语句就是: *(volatile uint32_t*)0x40012000 = 0xFFFFFFFF

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。