关于SFR的定义,我的考虑采取的策略是,只要是不同外设的单片机,都为其定义一个单独的头文件。这样做的好处是,编译时就可以检查出这款单片机的外设是否可用。
不同外设,并不只是某个外设(UART, SPI, PWM等)的有无,而是要具体到其中SFR的不同。例如:nuc1xx的UART,某些型号有485功能,那么这样的UART之间的不同也算是不同的外设。
这样的想法起因于QQ群的“xukaiming(15330302)”网友,在nuc120re3an上使用了TCSR.CTB,而他没有注意到TCSR.CTB是Low Density Only的,nuc120re3an并没有这个功能位,下面是QQ群的记录:xukaiming(15330302) 17:59:02
TIM2的CTB无法写入,
xukaiming(15330302) 17:59:05
120R3AN
......
John Lee 18:00:29
nuc120re3an没有CTB。
xukaiming(15330302) 18:00:51
我丢.....
xukaiming(15330302) 18:00:56
咋办啊
......
xukaiming(15330302) 18:01:19
不会吧.这个手册误导我?
xukaiming(15330302) 18:01:54
不是说支持的么?
John Lee 18:02:53
low density only
xukaiming(15330302) 18:02:57
吐血啊.这么郁闷
......
xukaiming(15330302) 18:04:18
吐血啊.什么垃圾啊 ,低密度支持高密度反而不支持
......
xukaiming(15330302) 18:06:46
哇.....呜,命苦啊,要挨批了,这么重大的错误
......
xukaiming(15330302) 18:11:28
车**蛋的东西,下次不用了
xukaiming(15330302) 18:11:49
还是用回STM32
我认为这个问题对不熟悉芯片的人(初学者),确实有很大的影响。 现在不是都在强调“用户体验”吗?这个问题其实对新唐m0的“用户体验”,起到的负面影响,不容小视。 如果用户在编译时,就能发现问题,用户就可以及早采取措施。
有网友说了,那人看数据手册也太马虎了,我说不能怨用户。新唐的TRM本来质量就不高,用户看错了,是很正常的,厂商总要想办法,把能够做的、方便用户的工作,都做完了,才能说是“尽力”了。
|