关于串口中断发送的问题。

关于串口中断发送的问题。,第1张

//创建一个串口通讯

SerialPort CurrentPort = null;

CurrentPort = new SerialPort();

CurrentPortReadBufferSize = 128;

CurrentPortPortName = comName; //端口号

CurrentPortBaudRate = bandRate; //比特率

CurrentPortParity =parity;//奇偶校验

CurrentPortStopBits = stop;//停止位

CurrentPortDataBits = databit;//数据位

CurrentPortReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常

//绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理

CurrentPortDataReceived += Sp_DataReceived;

CurrentPortOpen();

定义一个变量 byte[] receiveStr;

//绑定的事件处理函数

private static void Sp_DataReceived(object sender, SystemIOPortsSerialDataReceivedEventArgs e)

{

SerialPort sp = sender as SerialPort;

if (sp == null)

return;

byte[] readBuffer = new byte[spReadBufferSize];

spRead(readBuffer, 0, readBufferLength);

//赋值

receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串。

}

//你要求的按钮事件可以这么写

private void button1_Click(object sender, EventArgs e)

{

if(receiveStr!=null)

{

变量 xxx=receiveStr;

}

}

中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。

void CLK_INIT(void)

{

CLK_CKDIVR = 0x19; /HSI/8、CPU = 2/2,1M速度/

CLK_PCKENR1 = 0x04; /只开启uart1的时钟/

CLK_PCKENR2 = 0x00; /打开ADC的时钟/

}

void IO_INIT(void)

{

PA_CR1 = 0x00; /推挽输出/

PA_CR2 = 0x00; /最大输出为2MHZ,禁止外部中断/

PA_DDR |= 0x20; /PA5为输出/

}

void UART1_INIT(void)

{

UART1_BRR2 = 0x00;

UART1_BRR1 = 0x0d; /2M的Fmaster下9600的波特率/

UART1_DR = 0xaa;

UART1_CR2 = 0x08; /发送完寄存器空,发送使能/

UART1_CR3 = 0x00; /1个停止位/

}

#pragma vector = UART1_T_TXE_vector

__interrupt __root void UART1_TX(void)

{

UART1_SR = 0x00;

UART1_DR = 0xaa;

}

只作为参考,希望对您有帮助,谢谢!

以上就是关于关于串口中断发送的问题。全部的内容,包括:关于串口中断发送的问题。、串口通信中的中断是什么意思、STM8S207_UART1串口发送中断程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9846462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存