wuzhengmin 发表于 2026-3-24 09:46:26

串口1:

wuzhengmin 发表于 2026-3-24 09:53:58

ADC模数转换:
使能ADC中断使能ADC-DMA使能ADC-DMA中断

wuzhengmin 发表于 2026-3-24 11:10:10

接着我发现一个问题:

我在AiCube 里这样设置ADC:

wuzhengmin 发表于 2026-3-24 11:13:47

生成的ADC -DMA 初始化代码:

////////////////////////////////////////
// ADC初始化函数
// 入口参数: 无
// 函数返回: 无
////////////////////////////////////////
void ADC_Init(void)
{
    ADC_SetClockDivider(0);             //设置ADC时钟
    ADC_ResultRightAlign();             //设置ADC结果右对齐(12位结果)
    ADC_DisableRepeatConv();            //关闭ADC自动重复转换功能

    ADC_SetCSSetupCycles(0);            //设置ADC通道选择建立时间
    ADC_SetCSHoldCycles(1);             //设置ADC通道选择保持时间
    ADC_SetSampleDutyCycles(9);         //设置ADC通道采样时间

    ADC_DisableETR();                   //禁止ADC外部触发功能

    ADC_SetIntPriority(0);            //设置中断为最低优先级
    ADC_EnableInt();                  //使能ADC中断
    fADCConverted = 0;                  //初始化转换结束标志

    ADC_ActiveChannel(4);               //选择ADC通道
    ADC_Enable();                     //使能ADC功能

    DMA_ADC_SetAmount(0);               //设置ADC DMA扫描次数
    DMA_ADC_SetAddress(pu8ADCDMABuffer); //设置ADC DMA缓冲区地址
    DMA_ADC_SetInterval(0);             //设置ADC DMA扫描间隔时间(系统时钟)
    DMA_ADC_SetChannels(0x0010);      //设置ADC DMA扫描通道
    DMA_ADC_DisableRepeatConv();      //设置ADC DMA时每个通道重复转换次数
    DMA_ADC_ClearFlag();                //清除ADC DMA中断标志
    DMA_ADC_SetBusPriority(0);          //设置总线访问为最低优先级
    DMA_ADC_SetIntPriority(0);          //设置中断为最低优先级
    DMA_ADC_EnableInt();                //使能ADC DMA中断
    DMA_ADC_Enable();                   //使能ADC DMA功能
//    DMA_ADC_Trigger();                  //触发ADC DMA

    //<<AICUBE_USER_ADC_INITIAL_BEGIN>>
    // 在此添加用户初始化代码
    //<<AICUBE_USER_ADC_INITIAL_END>>
}

为什么最后一行把 DMA_ADC_Trigger();                  //触发ADC DMA
注释掉了?这样导致我第一次没有触发 DMA_ADC,dma_flag永远=0

导致电压显示永远是0? 可能STC要看一下.........

wuzhengmin 发表于 2026-3-24 11:31:40

ADC DMA循环扫描次数1次
每个通道重复转换次数1次

也可能是我理解错了?
我以为第一次是自动触发的...................

wuzhengmin 发表于 2026-3-24 13:30:00

继续学习:
23-RTC时钟实验
本讲主要内容:
1.实验介绍
2.硬件设计
3.软件设计
4.实验现象

wuzhengmin 发表于 2026-3-24 14:20:26

1.1 实验简介

低功耗:RTC模块工作电流低至2uA@VCC-3.3V、3uA@VCC-5.OV(典型值)

长时间跨度:支持2000年~2099年,并自动判断闰年闹钟:支持一组闹钟设置

支持多个中断:

一组闹钟中断(每天中断一次,中断的时间点为闹钟寄存器所设置的任意时/分/秒)

日中断(每天中断一次,中断的时间点为每天的0时0分0秒)

小时中断(每小时中断一次,中断的时间点为分/秒均为 0,即整点时)

分钟中断(每分钟中断一次,中断的时间点为秒为0,即分钟寄存器发生变化时)

秒中断(每秒中断一次,中断的时间点为秒寄存器发生变化时>

1/2 秒中断(每1/2 秒中断一次>

1/8秒中断(每1/8秒中断一次)1/32秒中断(每1/32秒中断一次)

支持掉电唤醒

特别注意:Ai8051U系列单片机的RTC无星期功能

wuzhengmin 发表于 2026-3-24 15:43:37

1.2 实验目的

数码管显示RTC时间,格式为XX-XX-XX。

2.硬件设计
本实验使用到硬件资源如下:
(1)GPIO
(2)数码管模块
(3)RTC

wuzhengmin 发表于 2026-3-24 15:54:43

RTC时钟设计:

wuzhengmin 发表于 2026-3-24 16:41:10

实验结果:

页: 17 18 19 20 21 22 23 24 25 26 [27] 28
查看完整版本: 学习休眠唤醒遇到的问题:1无法开启休眠 2舍弃一下功能后能进入休眠但无法唤醒