📄 serial.c
字号:
#include "uCOS_II.H"
#include "serial.h"
SerialBuffer pc_send;
/*--------------------------------------------------------------*/
/* ucOS-II的中断服务程序示例 */
/*--------------------------------------------------------------*/
void SerialISR(void) interrupt 4
{
#if OS_CRITICAL_METHOD == 3 // Allocate storage for CPU status register
OS_CPU_SR cpu_sr;
#endif
OSIntEnter(); // Must be called first at every hardware interrupt entry point
OS_ENTER_CRITICAL();
if(TI)
{
TI=0;
pc_send.ptr++;
if (pc_send.ptr < pc_send.count)
SBUF=pc_send.buffer[pc_send.ptr];
}
else if(RI)
{
RI=0;
//处理输入字符
}
OS_EXIT_CRITICAL();
OSIntExit(); // Must be called finally at every hardware interupt exit point
}
//串口初始化 0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200
void SerialInit(void)
{
TMOD |= 0x20; //定时器0:模式1(16位定时器),仅受TR0控制;定时器1:波特率发生器
TH1 = 0xFD; //晶振11.0592, 波特率 9600
ET1 = 0;
TR1 = 1; //start timer1
SCON = 0x50;
ES = 1;
//设置串口收发的初始值
pc_send.ptr=0;
pc_send.count=0;
}
void SendStr(unsigned char* buffer,int count) OS_REENTRANT
{
if (count > 0)
{
pc_send.buffer=buffer;
pc_send.count=count;
pc_send.ptr=0;
SBUF=buffer[0];
while (pc_send.ptr < pc_send.count); //wait until all char send
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -