找回密码
 立即注册
查看: 868|回复: 6

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

[复制链接]

该用户从未签到

12

主题

36

回帖

198

积分

注册会员

积分
198
发表于 2023-3-21 15:28:26 | 显示全部楼层 |阅读模式
奇了怪了,stc8H使用DMA发送串口数据,TIMER0就乱了。不用DMA发送,TIMER0中断就好了,能正常定时
回复 送花

使用道具 举报

该用户从未签到

12

主题

36

回帖

198

积分

注册会员

积分
198
 楼主| 发表于 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开始计时
}

点评

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

该用户从未签到

16

主题

162

回帖

1399

积分

版主

积分
1399
发表于 2023-3-21 15:45:48 | 显示全部楼层
1.png
你好 参考一下范例程序    下载地址:https://www.stcai.com/filedownload/618387
QQ:3398500488
微信号:18106296592(小刘)
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 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

    下面这句修改一下再看看



    1.png

    点评

    真如你所言,把这个位置一改就好了,真是太感谢了,把我从烦恼中解救出来  发表于 2023-3-22 00:39
    回复 支持 1 反对 0 送花

    使用道具 举报

    该用户从未签到

    12

    主题

    36

    回帖

    198

    积分

    注册会员

    积分
    198
     楼主| 发表于 2023-3-21 22:00:17 | 显示全部楼层
    zhp 发表于 2023-3-21 21:39
    下面这句修改一下再看看

    好,我按照这个建议试试
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-18 14:16 , Processed in 0.064686 second(s), 48 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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