注意:STC32G头文件和STC32G手册寄存器名称有些不一样的(汇总贴),使用手册时请留意
本帖最后由 rengran 于 2024-1-5 10:27 编辑STC32G手册中和STC32G头文件中寄存器名称有些不一样的地方,在此列举一下,方便参考官方手册写程序的朋友留意一下,避免编译时报错。
[*]前几天单独发了一个帖子关于定时器相关寄存器TMOD、TUXR、T4T3M中的定时和计数选择位的T0_C/T,T1_C/T,T2_C/T,T3_C/T,T4_C/T在头文件中分别为T0_CT,T1_CT,T2_CT,T3_CT,T4_C/T,在此不再列举,具体参考这个帖子的链接:https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5958
[*]定时器计数寄存器中的TnH,TnL
(1):手册中的T2,T3,T4的计数寄存器名称以及定时器T3T4控制寄存器分别为T2H、T2L,T3H、T3L,T4H、T4L及T4T3M。头文件中的名称如下图一所示
图1
从上图可知,在头文件中T2,T3,T4定时器的计数寄存器及定时器T3T4控制寄存器的地址分别定义了两种名称,即:T2H、T2L,T3H、T3L,T4H、T4L、T4T3M和TH2、TL2,TH3、TL3,TH4、TL4、T3T4M。这就说明,两种名称都可以使用,参照手册中的名称写程序是没有问题的。但是对于定时器T0和T1却不一样,因为这两个只有一种计数寄存器名称:TH0、TL0,TH1、TL1。
当你使用T2H、T2L,T3H、T3L,T4H、T4L的时候,千万不要想当然的以为对于定时器0和定时器的计数寄存器是T0H、T0L,T1H、T1L。命名规则的不统一性在写程序编译时有时候会产生未定义的错误,此时应该对照一下手册和头文件的定义是否一致。如果只有几处还好,如果好多处都不一致,可能在参考手册和写程序时你得要每处都要对照,不知道这种情况你会不会感觉头大?{:4_183:}。 不过参照之前有的网友建议,手册只是用来参考,头文件可以自己定义,不一致自己可以改头文件,你也可以参照T2T3T4的头文件方法,自己再增加定义T0T1的寄存器名称T0H、T0L,T1H、T1L。这里有一个缺点就是一旦官方更新头文件之后,你得从新自己再添加一次。采取哪种方式,各位可以自行决定。
3、定时器的运行控制位(不是手册和头文件名称不一样,而是5个定时器之间命名规则有些不同,使用时别想当然,严谨参考手册或者头文件)
定时器T0和T1的运行控制位的名称分别为:TR0、TR1
定时器T2、T3、T4的运行控制位的名称分别为:T2R、T3R、T4R,不要不看手册或者头文件,想当然的按照T0和T1的规律写成TR2、TR3、TR4。
定时器的中断溢出标志和外部中断请求标志
本帖最后由 rengran 于 2024-1-8 10:53 编辑4、定时器的中断溢出标志
定时器T0、T1的中断溢出标志分别为:TF0、TF1。
定时器T2、T3、T4的中断溢出标志分别为:T2IF、T3IF、T4IF。不要以为是按照T0和T1的命名规律进行命名的而误以为是TF2、TF3、TF4,一定要看手册或者头文件!!!
5、外部中断请求标志
外部中断0、外部中断1中断请求标志分别为:IE0、IE1。
外部中断2、外部中断3、外部中断4中断请求标志分别为:INT2IF、INT3IF、INT4IF。不要以为是按照外部中断0和外部中断1的命名规律进行命名的而误以为是IE2、IE3、IE4,一定要看手册或者头文件!!! T2R在寄存器AUXR里,有办法直接使用吗,像T2R=0;这样 wszjw2 发表于 2024-11-29 16:48
T2R在寄存器AUXR里,有办法直接使用吗,像T2R=0;这样
当然可以了,AUXR里的每个位都可以位寻址的,所以可以直接使用 STC32G手册中和STC32G头文件中寄存器名称有些不一样的地方
我以为应该让官方完善为佳吧
而不是让用户处处关注和规避
VCC 发表于 2024-12-2 19:58
我以为应该让官方完善为佳吧
而不是让用户处处关注和规避
之前也讨论过这个问题,改哪个为好,因为已经形成固定的模式等等原因,最后也没得出来个123,保留这样式让使用者在使用时注意就得了 rengran 发表于 2024-12-2 19:38
当然可以了,AUXR里的每个位都可以位寻址的,所以可以直接使用
我好像定义不了AUXR里的这个T2R地址,有例程可以学习一下吗
再定义一个名,方便又实用 bkeuqoaq 发表于 2024-12-4 15:27
再定义一个名,方便又实用
对,自己再define一个也是一个解决办法
页:
[1]
2