SPI出错的问题——中断嵌套引起的

   一、问题

       一般SPI底层写完,如果能运行起来代码是不会出错的。但当出现多中断嵌套时,就有可能会出现SPI操作错误的地址造成出错。

   二、现象

        博主在用PIC开发时遇到这样的情况:

        在低优先级中断里运行SPI读函数去读与单片机通信芯片的寄存器的值,恰巧地址是16位的,在SPI访问地址时得先写进高地址,然后再写进低地址访问。如果在写入高地址后,刚好其它中断优先级较高的中断切出去去执行SPI读写操作,这时候在切回来读低地址时,就相当于你操作的是低地址的内容,而不是高地址+低地址整块完整地址。就会造成前面写入的与后面读出来的不一现象。

三、结论

       总结一句就是在多中断嵌套,存在中断优先级现象时,且中断里都有操作SPI时要意识到地址会出错的问题。

猜你喜欢

转载自blog.csdn.net/wanruiou/article/details/105807339