我试图将KL25Z128配置为与C#代码相关的奇偶校验位和停止位。
一切似乎都很好,并且寄存器和C#的串行端口都已更改,但是我仍然无法对KL25Z128和C#的通信做任何事情。 ps。如果我不更改奇偶校验和停止位,一切都很好。即使更改波特率,它也可以正常工作。
此代码在微处理器中:
if (nBit==2)
UART0_BDH |= UART0_BDH_SBNS_MASK; //2 stop bit
else
UART0_BDH &= ~UART0_BDH_SBNS_MASK; //1 stop bits
//None=0 / Even=1 / Odd=2
switch (Parity){
case 0:
UART0_C1 &= ~UART0_C1_PE_MASK;
break;
case 1:
UART0_C1 |= UART0_C1_PE_MASK;
UART0_C1 &= ~UART0_C1_PT_MASK;
break;
case 2:
UART0_C1 |= UART0_C1_PE_MASK;
UART0_C1 |= UART0_C1_PT_MASK;
break;
}
此代码来自C#:
// In Naveh configuration
mySerialPort.Write("connect config " + BaudRateBox.Text + " " + StopBitBox.Text + " " + parity + "$");
System.Threading.Thread.Sleep(100);
mySerialPort.Close();
mySerialPort.BaudRate = Convert.ToInt32(BaudRateBox.Text);
mySerialPort.PortName = COMbox.Text;
mySerialPort.Parity = (Parity)Enum.Parse(typeof(Parity), ParityBox.Items[ParityBox.SelectedIndex].ToString());
mySerialPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), StopBitBox.Items[StopBitBox.SelectedIndex].ToString());
mySerialPort.Open();
mySerialPort.Write("$");
System.Threading.Thread.Sleep(1000); // wait till data transmited
Messege = mySerialPort.ReadExisting().ToString();
mySerialPort.Close();
*** $ char用于标记“句子”的结尾。