在stm32里面int是有符号数32位,在dsp里面int是16位。
stm32里面,有符号数8位,范围是-128----127,在二进制的存储里面,最高位位是符号位,127存的是0111 1111 在加1就是1000 0000 ,十进制是-128.所以-1就是1111 1111;
问题, u8(无符号数8位,0---255), 1-254=????结果也存在u8里面
答案是3,
计算机里面只做加法,所以254的补码是0000 00010 在加0000 0001 是0000 0011;所以是3
这样stm32的定时器是16位的,最大值是65535,在俩个时刻分别存储cnt,在一个周期内,俩个cnt不用判断谁大谁小,直接用后一个cnt减去前一个cnt。得到的是俩个时间差
spwm读表的时候,可以把表做成2的n次方。这样就可以不用管counter的溢出了,比如用了256个点的正弦表,counter++;把counter做成u8就够了,不用判断表是否溢出