找回密码
 立即注册
查看: 296|回复: 5

STC8G1K17串口中断,不能发送数据

[复制链接]

该用户从未签到

10

主题

31

回帖

142

积分

注册会员

积分
142
发表于 2023-9-12 17:00:47 | 显示全部楼层 |阅读模式
/**
* @brief  中断服务函数
* @param  无
* @retval 无
*/
void UART2_Isr() interrupt 8
{
        if(S2CON & 0x02)//发送中断
        {
                S2CON &= ~0x02;//清除中断标志
                busy_send = 0;//发送命令忙
        }
        if(S2CON & 0x01)//接收中断
        {
                S2CON &= ~0x01;//清除中断标志
                zylora_cmdpro.lorarevcmdinfo[zylora_cmdflg.LoRaRcvCnt++] = S2BUF;
                if(zylora_cmdflg.LoRaRcvCnt == 10)
                {
                        if(zylora_cmdpro.revcmd_info.Cmd != 0x61)
                        {
                                zylora_cmdflg.LoRaRcvFlg = 1;
                                busy_recv = 1;//接收命令忙
                        }
                }
                else if(zylora_cmdflg.LoRaRcvCnt == 11)
                {
                        if(zylora_cmdpro.revcmd_info.Cmd != 0x61)
                        {
                                zylora_cmdflg.LoRaRcvFlg = 1;
                                busy_recv = 1;//接收命令忙
                        }       
                }
                else if(zylora_cmdflg.LoRaRcvCnt == 12)
                {
                        zylora_cmdflg.LoRaRcvFlg = 1;
                        busy_recv = 1;//接收命令忙                       
                }
        }
}


/**
* @brief  初始化串口2
* @param  无
* @retval 无
*/
void Uart2_Init(void)  // 9600bps@24.000MHz
{
        COMx_InitDefine                COMx_InitStructure;        //结构定义
        GPIO_InitTypeDef        GPIO_InitStructure;                //结构定义

        GPIO_InitStructure.Pin  = GPIO_Pin_0 | GPIO_Pin_1;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
        GPIO_InitStructure.Mode = GPIO_PullUp;        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
        GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);        //初始化
        COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;        //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
        COMx_InitStructure.UART_BRT_Use   = BRT_Timer2;                        //选择波特率发生器, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
        COMx_InitStructure.UART_BaudRate  = 9600ul;                            //波特率, 一般 110 ~ 115200
        COMx_InitStructure.UART_RxEnable  = ENABLE;                                  //接收允许,   ENABLE或DISABLE
        COMx_InitStructure.BaudRateDouble = DISABLE;                          //波特率加倍, ENABLE或DISABLE
        UART_Configuration(UART2, &COMx_InitStructure);                  //初始化串口1 UART1,UART2,UART3,UART4
        NVIC_UART2_Init(ENABLE,Priority_1);                              //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
       
        UART2_SW(UART2_SW_P10_P11);                                      //UART2_SW_P10_P11,UART2_SW_P46_P47
        busy_send = 0;       //复位标志
        busy_recv = 0;       //复位标志
        ZYLoRa_MD0 = 1;
        ZYLoRa_MD1 = 0;
        ZYLoRa_AUX = 1;
}
/**
        * @brief  数据发送字节
        * @param  无
        * @retval 无
*/
void Uart2Send(u8 dat)
{
        while(busy_send);
        busy_send = 1;
        S2BUF = dat;
}





Uart2Send(0x5A);无数据发送出来
回复 送花

使用道具 举报

该用户从未签到

550

主题

9414

回帖

1万

积分

管理员

积分
13970
发表于 2023-9-12 22:12:47 | 显示全部楼层
截图202309122212426984.jpg
回复 支持 反对 送花

使用道具 举报

该用户从未签到

10

主题

31

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-9-13 09:35:00 | 显示全部楼层
每次用USB转串口下载,接上串口线单片机都会启动,下载不了,真麻烦,时行时不行
回复 支持 反对 送花

使用道具 举报

该用户从未签到

10

主题

31

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-9-13 10:55:38 | 显示全部楼层
啥也没有改,好了突然
回复 支持 反对 送花

使用道具 举报

该用户从未签到

10

主题

31

回帖

142

积分

注册会员

积分
142
 楼主| 发表于 2023-9-13 11:21:30 | 显示全部楼层
把串口2接入USB串口模块,不打开电源,一直有数据回复,回复数据是我发送的数据,说明一直在复位,一直处于低压重启的状态???????
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 139 天

    [LV.7]常住居民III

    26

    主题

    1330

    回帖

    4141

    积分

    论坛元老

    积分
    4141
    发表于 2023-9-13 16:51:22 | 显示全部楼层
    Zhouzhou 发表于 2023-9-13 11:21
    把串口2接入USB串口模块,不打开电源,一直有数据回复,回复数据是我发送的数据,说明一直在复位,一直处于 ...

    不开电源,如果只通过USB串口模块的发送脚供电是不稳定的,芯片VCC稳定供电后再测功能。
    STC8G-8H库函数例程包,独立例程里面有串口2中断模式与电脑收发测试,如果通信不正常的话,建议先用例程试试,只要进行通信脚位模式初始化,以及通道切换修改就可以。
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-13 14:20 , Processed in 0.061701 second(s), 51 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表