STM32上面,这两位只可读,复位值为1,GD32上面是多少?
正因为这个BUG,我在STM32上反倒做好了FIFO发送。
FIFO的最大头痛就是“追尾”问题。应用程序中往“头”写数据,中断程序中把“尾”的数据发送到DR。但是每次写“头”的时候要考虑是否触发第一个字节到DR:如果遇到中断时已经“追尾”但是没有写DR,那么这一包数据就发不出去;但是如果没有“追尾”却触发了DR,则会多发一个字节,而判断“追尾”是在中断外,往往读到没有“追尾”但是其实已经追尾。
但正是因为STM32的这个bug,反而是个好处。TC为1,写完“头”后不要去管什么该不该写DR或者有没有“追尾”,使能TCIE,就能进中断,而中断发生时就判断是否追尾,如果追尾就关闭TCIE。
|