使用DMA_UART发送数据C51和C251区别
我在xdata内存申请了一段局部内存,给这段内存赋值后使用DMA_UART发送在DMA_UART发送还没有结束我就退出了发送函数,因为xdata内存只有这个发送函数使用
所有不考虑局部内存的使用有效寿命
很奇怪的是C51中这么写没有问题,发送的数据是对的
但是在C251中这样写发送的数据后半段被修改过了
实在无法想象到底是被什么修改掉的,而且在C251把局部内存改成全局内存时同样数据也被修改掉了
修改掉的数据是一样的,帮忙分析下被什么修改掉的数据
一段内存使用DMA_UART发送没有结束退出函数后所在的xdata段数据被莫名修改掉了
但是等到发送完再退出函数是正常的
按理说我就一个发送函数使用的了xdata内存,其他没地方使用xdata内存,没理由会被修改掉数据
可以尝试加入volatile关键词防止编译器优化
同时需要注意,C51最大可发送长度为256,C251最大可发送长度为65536
同时,C251需要8位8位的载入寄存器,16位一次性载入的需要对应的寄存器支持,否则载入顺序会错误
页:
[1]