GPIOA一共7个寄存器,每个占用4个字节,那为什么还说它占用的地址范围是0x4001 0800 - 0x4001 0BFF 啊~

 

 

 

 

那除了0x40010800-0x40010818是可以用的,其余的预留扩展的在stm32里面能访问利用么?

应该是只读 , 不过读出来也应该是0 , 
反正是无意义。 
这段空间 地址范围决定不能作为RAM或指定变量存储地方

其他的期间的地址分配类似比如AD7739的寄存器地址分配

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用STM32H743的寄存器来配置串口并发送数据。以下是一个使用寄存器编写代码的示例,用于发送两个字节到串口调试助手: ```c #include "stm32h7xx.h" void USART2_Init(void) { // 使能USART2时钟 RCC->APB1ENR1 |= RCC_APB1ENR1_USART2EN; // 配置GPIOA引脚 RCC->AHB4ENR |= RCC_AHB4ENR_GPIOAEN; // 配置引脚PA2作为USART2的TX引脚 GPIOA->MODER &= ~GPIO_MODER_MODE2_Msk; GPIOA->MODER |= GPIO_MODER_MODE2_1; GPIOA->AFR[0] &= ~GPIO_AFRL_AFSEL2_Msk; GPIOA->AFR[0] |= 7UL << GPIO_AFRL_AFSEL2_Pos; // 配置USART2 USART2->CR1 &= ~USART_CR1_UE; // 禁用USART2 USART2->CR1 = 0; // 清除配置 USART2->BRR = 0x1A0; // 设置波特率为115200(根据时钟频率调整) USART2->CR1 |= USART_CR1_TE; // 使能发送 USART2->CR1 |= USART_CR1_UE; // 使能USART2 } void USART2_Send(uint8_t data) { while ((USART2->ISR & USART_ISR_TXE) == 0); // 等待发送缓冲区为空 USART2->TDR = data; // 发送数据 } int main(void) { USART2_Init(); // 发送两个字节 USART2_Send(0xAB); USART2_Send(0xCD); while (1) { // 主循环 } } ``` 在上述代码中,我们首先定义了`USART2_Init`函数来配置USART2串口的GPIO引脚和寄存器设置。然后,我们定义了`USART2_Send`函数来发送一个字节的数据。 在`main`函数中,我们初始化USART2串口,并使用`USART2_Send`函数发送两个字节(0xAB和0xCD)到串口调试助手。然后我们进入一个无限循环,以保持程序运行。 请注意,以上代码仅是一个示例,你需要根据实际情况进行适当的更改。具体的时钟配置和引脚配置可能因单片机的不同而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值