如何修改KL25Z128和C#中的奇偶校验位和停止位?

时间:2019-06-18 20:15:23

标签: c# uart parity codewarrior

我试图将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用于标记“句子”的结尾。

0 个答案:

没有答案