工具/软件:Code Composer Studio
尊敬的所有人:
我正在使用 CCS、在我的项目中、我在数据类型方面遇到了问题。
UNION DATA{
unsigned char d;
}检查;
int main (void){
check.d=32000;
}
当我将大值放入无符号字符时、它不会发出任何警告、即使在调试器窗口中、它也会显示32000。 实际上、我通过在调试器上获取该负值(-32576)来读取串行端口中的数据。 当我想将其与 fix char 进行比较时、我无法获得正确的结果。
我的串行端口驱动程序如下所示(从电源套件)。
void scib_fifo_init()
{
EALLOW;
ScibRegs.SCICCR.all = 0x0007;// 1停止位,无环回
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
ScibRegs.SCICTL1.all = 0x0003;//启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
ScibRegs.SCICTL2.bit.TXINTENA=0;
ScibRegs.SCICTL2.bit.RXBKINTENA=1;
ScibRegs.SCIHBAUD.ALL = 0x0002;
ScibRegs.SCILBAUD.ALL = 0x008B;;
ScibRegs.SCICCR.bit.LOOPBKENA=0;//启用回路
SCIFFTX.ALL = 0xC021;
ScibRegs.SCIFFRX.ALL = 0x0021;
ScibRegs.SCIFFCT.all = 0x00;
ScibRegs.SCICTL1.ALL = 0x0023;//从复位中撤回 SCI
ScibRegs.SCIFFTX.bit.TXFIFORESET = 1;
ScibRegs.SCIFFRX.bit.RXFIFORESET = 1;
EDIS;
}