• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32f103串口1,接受数据缓冲buf地址是多少

coliner 2019-02-15 浏览量:1538
stm32f103串口1,接受数据缓冲buf地址是多少
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你问的就是DR寄存器,这个寄存器和51单片机一样,51单片机只有一个缓存寄存器SBUF,STM32里面也一样,只有一个DR寄存器,有发送缓存和接收缓存,但是在芯片内部硬件上会自动选择相对应的寄存器,发送对应发送的缓存,接收对应接收的缓存,硬件自己知道。但是面向程序员只有一个DR寄存器。
    STM32的寄存器地址表示方式为:基地址+偏移值。
    串口1的DR寄存器偏移值为0x04,基地址为0x4001 3800。因此DR寄存器的地址是0x4001 3804.

    • 发布于 2019-02-15
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • 是外设地址,还是你ram中自己定义的地址,外设地址头文件里面可以找到,ram定义的地址是编译器分配的,或者用动态内存分配
    • 发布于2019-02-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个你要看103的相关寄存器手册了,就能找到接受寄存器的地址了
    • 发布于2019-02-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 是在你程序中定义用来接受数据的buffer的首地址。
    • 发布于2019-02-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果不用DMA的话没有缓存地址,所有数据均在寄存器上,如果用DMA的话首地址是由你初始化DMA时指定的。
    • 发布于2019-02-24
    • 举报
    • 评论 0
    • 0
    • 0

  • STM32的串口没有自带BUFF的,只有个寄存器,用来保存一个数据,通常的做法是自己在内存开一个BUFF,然后用DMA的方式
    • 发布于2019-02-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 查 芯片的参考手册,或者直接使用 hal 库的收发函数,收完数据,从指针变量中取数据就好。

    高级单片机开发,不要依赖寄存器地址,依赖硬件的东西,不适合高级应用开发,不容易移植。越高级越抽象,越通用

    • 发布于2019-02-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 芯片本身没有串口缓冲地址 只有寄存器地址

    但可以自己设置一个数据缓存器 地址自定

    • 发布于2019-02-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 没有缓存,只有一个寄存器地址,会直接更新掉。配置成DMA接收,可以自己设长度
    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口本身没有缓存只有一个数据寄存器用来存储最新的数据,DMA接收的话可以配置一个内存池接收

    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32f103串口1,接受数据缓冲buf地址是多少