这里要贴上STM32 USB相关的寄存器的具体设置,对学习STM32的USB很有帮助。对于涉及到寄存部分的代码,参考这些寄存器的说明,就可以差不多都懂了。由于网页贴不上表格,所以就截屏成图片贴上来,如果看不清楚,就下载图片去看
1.编程好习惯之变量定义:
定义变量时总是按变量类型所占空间大小来排序是最好的!
如果是只有某个函数使用些变量,而且你又需要在函数让函数退出时不被销毁,那么就使用static吧
2.编程好习惯之函数定义:
如果我们定义的C函数仅在此C文件中被调用那么加上static吧(适用于多文件编程)
如果我们想躲避C函数参数的类型检查,那 么K&R的函数定义声明方式还是很不错的!
3.编程好习惯之变量类型使用
如果我们考虑可移植性的化,就最好不要去乱用int变量,因为int在不同的平台和编译器上是变化的!
4.编程好习惯之编码
有时间在不明显减少代码的可读性时,可以考虑将一些语句合并,使编译器充分使用寄存器, 当然如果使用register 变量作中间变量效果也是一样的!
对于一些频繁使用的变量可以考虑使用寄存器变理,如for语句中使用的变量,这样可以获得更快的速度,但是要注意的是,这个变量的使用范围一定要非常的小才可以使用 寄存器变量!
尽量使用逻辑运算代替算术运算
5.在使用类似 a &= 0xfff7 来清除某一位时,不妨试试 a &= ~(1 << 4),即不会影响效率,编译器还会帮你确定到底是使用a &= 0xffffff7 还是在高位有更多个ff.
6.宏名有效范围仅限于本c源文件
7.如果要清除某个标志位,或许直接清除,这样比先判断再清除要快得多
设计资源 培训 开发板 精华推荐
- EVAL-ADF4108EBZ1,ADF4108 评估板,用于 PoE 无线接入点的 8000 MHz PLL 时钟发生器
- LT6656AIS6-5、5V 扩展电源范围电压基准的典型应用
- TWS 耳機充電盒
- ZXLD1370EV3,基于 ZXLD1370 9A 大电流降压 LED 驱动器的评估板
- 使用 Allegro MicroSystems 的 A8698 的参考设计
- 具有停机功能的 LTC1278、12 位、500ksps 采样 A/D 转换器的典型应用
- STC15最小系统
- 使用 Analog Devices 的 LTC3130IUDC#PBF 的参考设计
- 使用 MaxLinear, Inc 的 SPX385M1-1.2/TR 的参考设计
- 基于esp12f的米家控制小灯