zcllom 发表于 2023-3-21 15:28:26

奇了怪了,STC8H使用DMA发送串口数据,TIMER0就乱了。

奇了怪了,stc8H使用DMA发送串口数据,TIMER0就乱了。不用DMA发送,TIMER0中断就好了,能正常定时

zcllom 发表于 2023-3-21 15:33:17

本帖最后由 zcllom 于 2023-3-21 15:35 编辑

void UART1_DMA_Config(void)
{
      DMA_UR1T_CFG = 0x80;                //bit7 1:Enable Interrupt
      DMA_UR1T_STA = 0x00;
}

void UART1_DMA_Transmit(u8 *pData, u16 Size)
{
    if(Size == 0) return;
    Size -= 1;
        DMA_UR1T_AMT = (u8)Size;      //设置传输总字节数:n+1
        DMA_UR1T_TXA = (u8)pData;
    DMA_UR1T_CR = 0xc0;   //bit7 1:使能 UART4_DMA, bit6 1:开始 UART1_DMA 自动发送
}

void Uart1Init(void)                //9600bps@22.1184MHz                        //调试接口
{
      SCON = 0x50;                //8位数据,可变波特率
      AUXR |= 0x40;                //定时器时钟1T模式
      AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
      TMOD &= 0x0F;                //设置定时器模式
      TL1 = 0xC0;                //设置定时初始值
      TH1 = 0xFD;                //设置定时初始值
      ET1 = 0;                //禁止定时器%d中断
      TR1 = 1;                //定时器1开始计时
      P_SW1 &= 0x3f;
      P_SW1 |= 0x40;      //UART1 switch to, 0x00: P3.0 P3.1, 0x40: P3.6 P3.7, 0x80: P1.6 P1.7, 0xC0: P4.3 P4.4
      //ES= 1;      //允许中断                        
      //REN = 1;      //允许接收      
      B_TX1_Busy = 0;
}

void Timer0_init(void)                //1500微秒@22.1184MHz
{
      INTCLKO &= ~0x01;          //不输出时钟
      AUXR |= 0x80;                        //定时器时钟1T模式
      TMOD &= 0xF0;                        //设置定时器模式
      TL0 = 0x66;                              //设置定时初始值
      TH0 = 0x7E;                              //设置定时初始值
      ET0 = 1;                  //允许中断
      TF0 = 0;                              //清除TF0标志
      TR0 = 1;                              //定时器0开始计时
}

芯LYS 发表于 2023-3-21 15:45:48


你好 参考一下范例程序    下载地址:https://www.stcai.com/filedownload/618387

zhp 发表于 2023-3-21 21:39:32

zcllom 发表于 2023-3-21 15:33
void UART1_DMA_Config(void)
{
      DMA_UR1T_CFG = 0x80;                //bit7 1:Enable Interrupt


下面这句修改一下再看看





zcllom 发表于 2023-3-21 22:00:17

zhp 发表于 2023-3-21 21:39
下面这句修改一下再看看

好,我按照这个建议试试
页: [1]
查看完整版本: 奇了怪了,STC8H使用DMA发送串口数据,TIMER0就乱了。