STM32寄存器地址映射

C语言回顾:指向结构体变量的指针

例如:struct student *p  //p可以指向struct student 类型的变量或数组元素;
例题:

main()
{
 struct student
  {
    char name[20];     //姓名
    int num;        //学号
    int age;        //年龄
    char group;      //所在小组
    float score; //成绩
  } stu1 = { “Tom”, 12, 18, ‘A’, 136.5 },*pstu = &stu1;          //读取结构体成员的值
    printf(“%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n”, (*pstu).name, (*pstu).num, (*pstu).age, (*pstu).group, (*pstu).score);   //括号不可省略,点运算符优先级高于星号运算符
    printf(“%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n”, pstu->name,pstu->num, pstu->age, pstu->group,pstu->score);      //”->”指向运算符,表示p所指向的结构体变量的某个成员
}
输出结果:
      Tom的学号是12,年龄是18,在A组,今年的成绩是136.5!
      Tom的学号是12,年龄是18,在A组,今年的成绩是136.5!

stm32寄存器地址映射

stm32寄存器地址映射

现在的自我理解:

一个寄存器组 比如串口0寄存器组 这些寄存器在“内存中”都是连续分布的 硬件制作好的时候 每个寄存器的首地址都是固定的 往寄存器对应的地址的内存赋值 就可以实现对寄存器的赋值 实现各种硬件的操作 但是随着寄存器数量非常大的时候 程序员不可能记住每一个寄存器的地址 要实现对每一个寄存器都准确无误的操作 就不能直接往寄存器对应地址的内存里面赋值了 所以这个时候可以通过确定寄存器组的首地址 采用结构体的方式 以该首地址创建一个结构体 结构体成员变量对应一个个寄存器 程序员通过对结构体变量的赋值 每一个结构体变量名代表着一小段内存空间即一个个寄存器(寄存器地址名称映射)

猜你喜欢

转载自blog.csdn.net/qq_15897133/article/details/80770823