这里要阐述一下观点,免得被大家误解,大家这样吵来吵去最终只会变成人身攻击,就偏移了这个帖子的主题了。
1.这篇帖子不是来褒贬原子的,不是像1楼那样的愤青来对其进行人身攻击的。
2.楼主我从不讨厌操作寄存器,相反,我很喜欢寄存器。我刚入门的时候使用的是V3.50版本的库,但是学到最后,我发现这种方式不足。因为那时候只是调用库,不了解底层,一直在库上面的时候,我甚至不知道为什么设置成为输入的时候不需要设置结构体中的速度。只有看了寄存器之后我才知道为什么。
3.这篇帖子不是对正点原子进行人身攻击的。
4.这篇帖子不是单独说正点原子的,只是说明这一类的库,就行他的寄存器的库那样。这样的写作方式只是把STM32当做51来使用,就算直接操作寄存器能够在时间上面节省一点,但是STM32快速的运算速度也能够掩饰这点瑕疵。而类似51的写作方式只能显示出他的弊端。举个例子:
原子的操作寄存器的时候,每次需要设置某一个引脚的时候,都需要反复的调用GPIOx->xxx|=0xABCDEF;像这样的方式,每次写的时候我都需要记住输出,50M,推挽的数值是多少,如果有一天我记错了,那么程序就会出现bug。
5.Arduino也是直接操作寄存器的,但是他们不仅仅是操作寄存器,他们会对寄存器进行封装。封装出类似digitalWrite,pinMode这样的函数。当我们对寄存器做了这样的封装时候,还用费力的记住输出,50M,推挽,寄存器应该写什么值吗?即使不提Arduino,那么以STM32为主控芯片的Maple不也是很好的例子吗? |