本帖最后由 lvben5d 于 2021-5-19 10:44 编辑
本质 都是写寄存器 没啥区别,你用结构体成员变量去赋值 跟这个宏定义调用,编译后得汇编代码是一摸一样得。都是直接对寄存器地址读写操作。 不过这个风格跟原来STM32那个不一样了(甚至跟从前的GD32不一样),貌似我记得GD32以前也是 寄存器基地址做结构体首地址,GD32E103 貌似改了F103的这种常规写法。 结构体定义寄存器的方式 其实是最好的! 因为偏移地址都基本固定,写库 代码量也会少一点,用户不管是使用库 和 学习直接操作寄存器都有参考的空间。 这个东西应该没啥侵权啊,没理由做最佳的方式。 唯一的解释就是 用函数名来代替你直接操作寄存器地址 可读性强一些吧(不用库函数的moment?)。 PS: 我的代码的确直接用到了操作寄存的这个,而不是用库函数,减少了函数的调用和退出。
TIMER_CNT(TIMER1) = 0; 直接操作寄存器地址 赋值0 汇编代码应该是比操作库函数少吧? 清晰度好,就是自己要记住,可读性一般TIMER_CTL0(TIMER1) |= 0x00000001;
|