JC钜 发表于 2025-6-21 17:08:04

变形金刚狼 发表于 2025-6-1 14:17
遇到同样的问题了,楼主后来解决了吗?

后来我把不用的串口给禁用了。然后就正常了

llionwang 发表于 2025-8-3 19:30:43

17T可以同时跑DMA SPI和DMA UART

paulzheng 发表于 2025-12-10 23:23:34

JC钜 发表于 2024-10-10 10:55
刚发现不能进串口中断的时候,我还以为是虚焊,换了3颗MCU之后还是不行,于是重新换回08T,发现一切正常 ...

麻烦帮我看一下,我用STC8H1K08写的程序,但是电脑的串口助手收不到0X50这个数据,不知道是什么原因?
#include "STC8H.H"
#include "config.H"
#include "intrins.H"
#include "Type_def.h"
#include        "STC8G_H_Delay.h"

#define LED1P11
#define LED2P36
#define LED3P35
#define LED4P30
#define LED5P31
#define LED6P33
#define LED7P14
#define LED8P15
#define LED9P34
#define key   P32

void GPIO_Init(void);

void Uart1_Isr(void) interrupt 4
{
        u8 temp ;
        if (TI)                                //检测串口1发送中断
        {
                TI = 0;                        //清除串口1发送中断请求位
    LED7=!LED7;
        }
        if (RI)                                //检测串口1接收中断
        {
                RI = 0;                        //清除串口1接收中断请求位
                LED8=!LED8;

        }
}

void Uart1_Init(void)        //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位数据,可变波特率,允许接收数据
        AUXR &= 0xBF;                //定时器时钟1T模式
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设置定时器模式
        TL1 = 0xE0;                        //设置定时初始值
        TH1 = 0xFE;                        //设置定时初始值
        ET1 = 0;                        //禁止定时器中断
        TR1 = 1;                        //定时器1开始计时
        ES = 1;                                //使能串口1中断
        TI = 0;       
}

void main ()
{
P_SW2|= 0x80;
        GPIO_Init();
        Uart1_Init();
        EA = 1;
        SBUF=0x50;
        while(1)
        {               
        }
               
}

void GPIO_Init(void)
{
        P1M0 = 0x00; P1M1 = 0x00;
        P3M0 = 0x00; P3M1 = 0x00;       

}
页: 1 [2]
查看完整版本: STC8H1K17T串口疑问 | 已解决