问答

汇集网友智慧,解决技术难题

21ic问答首页 - ADC是Utimer0触发的,但却找不到使能Utimer0的语句

ADC是Utimer0触发的,但却找不到使能Utimer0的语句

红色钢铁2023-03-01
这个demo:LKS32MC08x_PeripDemo_v2p7.zip\4.ADC\ADC_UTimer_Triggerdemo里的代码如下:
ADC代码:
  1. void ADC0_init(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStruct;
  4.     GPIO_StructInit(&GPIO_InitStruct); //初始化结构体
  5.        
  6.                 /* ADC_CHANNEL_7 P0.3 */
  7.     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_ANA;
  8.     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
  9.     GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
  10.     GPIO_Init(GPIO0, &GPIO_InitStruct);
  11.        
  12.                 ADC_InitTypeDef ADC_InitStructure;
  13.     ADC_StructInit(&ADC_InitStructure); //初始化结构体

  14.     ADC_InitStructure.IE = ADC_EOS0_IRQ_EN | ADC_DAT0_OV_IRQ_EN; //第一段扫描结束中断使能和ADC_DAT0超阈值中断
  15.     ADC_InitStructure.Align = ADC_LEFT_ALIGN;                    //ADC数据输出左对齐
  16.     ADC_InitStructure.UTIMER_Trigger_En = ADC_UTIMER_T0_TRG;     //UTIMER_T0硬件触发ADC采样
  17.     ADC_InitStructure.MCPWM_Trigger_En = DISABLE;                //关闭MCPWM的硬件中断
  18.     ADC_InitStructure.FirSeg_Ch = ADC_1_TIMES_SAMPLE;            //第一段采样的总通道数: 1~20
  19.     ADC_InitStructure.Trigger_Cnt = 0;                           /*单段触发模式下触发一次采样所需要的事件数:0~15 0表示需要一次触发,15表示需要16次*/
  20.     ADC_InitStructure.Trigger_Mode = ADC_1SEG_TRG;               /*ADC采样1段模式*/
  21.     ADC_InitStructure.DAT0_TH_Type = 1;                          //设置ADC比较上阈值中断
  22.     ADC0_DAT0_TH = 5000;                                         //设置ADC0_DARA0大于ADC0_DAT0_TH值时,触发ADC数值比较中断
  23.     ADC_Init(ADC0, &ADC_InitStructure);

  24.     ADC0_IF = 0xff;                                   //清中断标志位
  25.     ADC0_GAIN0 = 0x0;                                 //开启2/3增益
  26.     ADC0_CHN0 = ADC_CHANNEL_7 | (ADC_CHANNEL_7 << 8); //采样电位器分压值                                                

  27. }

定时器代码:
  1. void ADC0_init(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStruct;
  4.     GPIO_StructInit(&GPIO_InitStruct); //初始化结构体
  5.        
  6.                 /* ADC_CHANNEL_7 P0.3 */
  7.     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_ANA;
  8.     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
  9.     GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
  10.     GPIO_Init(GPIO0, &GPIO_InitStruct);
  11.        
  12.                 ADC_InitTypeDef ADC_InitStructure;
  13.     ADC_StructInit(&ADC_InitStructure); //初始化结构体

  14.     ADC_InitStructure.IE = ADC_EOS0_IRQ_EN | ADC_DAT0_OV_IRQ_EN; //第一段扫描结束中断使能和ADC_DAT0超阈值中断
  15.     ADC_InitStructure.Align = ADC_LEFT_ALIGN;                    //ADC数据输出左对齐
  16.     ADC_InitStructure.UTIMER_Trigger_En = ADC_UTIMER_T0_TRG;     //UTIMER_T0硬件触发ADC采样
  17.     ADC_InitStructure.MCPWM_Trigger_En = DISABLE;                //关闭MCPWM的硬件中断
  18.     ADC_InitStructure.FirSeg_Ch = ADC_1_TIMES_SAMPLE;            //第一段采样的总通道数: 1~20
  19.     ADC_InitStructure.Trigger_Cnt = 0;                           /*单段触发模式下触发一次采样所需要的事件数:0~15 0表示需要一次触发,15表示需要16次*/
  20.     ADC_InitStructure.Trigger_Mode = ADC_1SEG_TRG;               /*ADC采样1段模式*/
  21.     ADC_InitStructure.DAT0_TH_Type = 1;                          //设置ADC比较上阈值中断
  22.     ADC0_DAT0_TH = 5000;                                         //设置ADC0_DARA0大于ADC0_DAT0_TH值时,触发ADC数值比较中断
  23.     ADC_Init(ADC0, &ADC_InitStructure);

  24.     ADC0_IF = 0xff;                                   //清中断标志位
  25.     ADC0_GAIN0 = 0x0;                                 //开启2/3增益
  26.     ADC0_CHN0 = ADC_CHANNEL_7 | (ADC_CHANNEL_7 << 8); //采样电位器分压值                                                

  27. }

----------------

看不懂啊:
1,定时器0到底是在哪使能的?
2,实际调试程序确实能跑。
有大佬能给解释解释吗?
回答 +关注 21
941人浏览 0人回答问题 分享 举报
0 个回答

您需要登录后才可以回复 登录 | 注册