[PIC®/AVR®/dsPIC®产品] 关于MCC 生成串口中断代码

[复制链接]
1977|10
 楼主| linkenpark123 发表于 2021-12-9 14:30 | 显示全部楼层 |阅读模式
实话说,我确实是看不懂串口接收中断的代码,不知道是怎么用的。有那位大老有经验请教下吗?
uint8_t EUSART1_Read(void)
{
    uint8_t readValue  = 0;
   
    while(0 == eusart1RxCount)
    {
    }
   
    eusart1RxLastError = eusart1RxStatusBuffer[eusart1RxTail];
   
    readValue = eusart1RxBuffer[eusart1RxTail++];
    if(sizeof(eusart1RxBuffer) <= eusart1RxTail)  
    {
        eusart1RxTail = 0;
    }
    PIE3bits.RC1IE = 0;  //USART接收中断启用位 0:关闭,阻塞的方式是手动把中断启用位置1,置0
    eusart1RxCount--;
    PIE3bits.RC1IE = 1; //1开启

    return readValue;
    }

/*接收中断函数*/
void EUSART1_Receive_ISR(void)
{

    eusart1RxStatusBuffer[eusart1RxHead].status = 0;

    if(RC1STAbits.FERR){
        eusart1RxStatusBuffer[eusart1RxHead].ferr = 1;
        EUSART1_FramingErrorHandler();
    }

    if(RC1STAbits.OERR){
        eusart1RxStatusBuffer[eusart1RxHead].oerr = 1;
        EUSART1_OverrunErrorHandler();
    }
   
    if(eusart1RxStatusBuffer[eusart1RxHead].status){
        EUSART1_ErrorHandler();
    } else {
        EUSART1_RxDataHandler();
    }
   
    // or set custom function using EUSART1_SetRxInterruptHandler()
}

/*中断回调函数*/
void EUSART1_RxDataHandler(void){
    // use this default receive interrupt handler code
    eusart1RxBuffer[eusart1RxHead++] = RC1REG;   //把接收的字符存入数组
    if(sizeof(eusart1RxBuffer) <= eusart1RxHead) //如果缓冲区溢出,则清零忽略
    {                                            //sizeof(数组名),代表整个数组的存//下标数组名,sizeof(eusart1RxBuffer) 字节数
        eusart1RxHead = 0;                       
    }   
    eusart1RxCount++;   
}
 楼主| linkenpark123 发表于 2021-12-9 14:31 | 显示全部楼层
真的看不懂他的逻辑,
lcczg 发表于 2021-12-9 14:58 | 显示全部楼层
本帖最后由 lcczg 于 2021-12-9 14:59 编辑

你可以理解为一个公共数组eusart1RxBuffer, 中断函数往里面写,EUSART1_Read往外面读。两者之间独立,各管各的。好处是没有耦合,不会丢失收到的数据。
wangchangwenqq 发表于 2021-12-9 16:56 | 显示全部楼层
缓冲区是个 FIFO 结构
andreilei 发表于 2021-12-10 09:18 | 显示全部楼层
《电子的奇妙世界》用定格动画的方式讲述发生在电子世界的故事,呈现元器件们的奇妙冒险!
整容二极管
晶振的噩梦
谁杀死了LED
保险丝的葬礼
妄自尊大的发光二极管
————
电子的奇妙世界,视频公开课
https://open.21ic.com/open/lesson/5766
keaibukelian 发表于 2022-1-7 13:44 | 显示全部楼层
很多标志量不知道代表啥
木木guainv 发表于 2022-1-7 13:46 | 显示全部楼层
希望可以多加点注释
tpgf 发表于 2022-1-7 14:00 | 显示全部楼层
这样做比较安全
guanjiaer 发表于 2022-1-7 14:05 | 显示全部楼层
默认的是几个啊
heimaojingzhang 发表于 2022-1-7 14:24 | 显示全部楼层
可以自己再定一个
labasi 发表于 2022-1-7 14:25 | 显示全部楼层
这个代码是自己写的吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部