打印
[STM32F1]

stm32f103 AD 触发

[复制链接]
827|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzfyjc|  楼主 | 2018-4-24 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本来想设置TIME1CC4来触发AD转换的,所以选用 注入通道的外部触发转换模式 ,在这句   ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE);完成后, ADCx->CR2  | =CR2_JEXTTRIG_JSWSTART_Set ;   CR2_JEXTTRIG_JSWSTART_Set  头文件定的为 0x00208000;    这些都没错,但仿真后显示的,只有ADC1->CR2   ,只有低16处理有效,高16位处理无效?不知道为什么,而且直接 ADC->CR2操作,编译又说无这个寄存器?有人可以帮忙解答吗?
沙发
mmuuss586| | 2018-4-24 11:22 | 只看该作者
到头文件下面找找对应的寄存器看看

使用特权

评论回复
板凳
zzfyjc|  楼主 | 2018-4-24 11:36 | 只看该作者
mmuuss586 发表于 2018-4-24 11:22
到头文件下面找找对应的寄存器看看

刚好看了,高位是可以操作的,只是那一样不能,ADC_StructInit(&ADC_InitStructure);
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;        //ADC¹¤×÷ģʽ:ADC1ºÍADC2¹¤×÷ÔÚ¶ÀÁ¢Ä£Ê½
        ADC_InitStructure.ADC_ScanConvMode = ENABLE;//Ä£Êýת»»¹¤×÷ÔÚɨÃèģʽ£¨¶àͨµÀ£©»¹Êǵ¥´Î£¨µ¥Í¨µÀ£©Ä£Ê½
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //Ä£Êýת»»¹¤×÷ÔÚÁ¬Ðø»¹Êǵ¥´Îģʽ
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigInjecConv_T1_TRGO;//¶¨ÒåÁËʹÓÃÍⲿ´¥·¢À´Æô¶¯¹æÔòͨµÀµÄÄ£Êýת»»
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//Êý¾ÝÏò×ó±ß¶ÔÆ뻹ÊÇÏòÓұ߶ÔÆë
        ADC_InitStructure.ADC_NbrOfChannel = 4;//˳Ðò½øÐйæÔòת»»µÄADCͨµÀµÄÊýÄ¿
        ADC_Init(ADC1, &ADC_InitStructure);
       
  ADC_RegularChannelConfig(ADC1, ADC_Channel_6,  1, ADC_SampleTime_7Cycles5);
        ADC_RegularChannelConfig(ADC1, ADC_Channel_7,  2, ADC_SampleTime_7Cycles5);
        ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 3, ADC_SampleTime_7Cycles5);
        ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 4, ADC_SampleTime_7Cycles5);

        /* Enable ADC1 DMA*/
        ADC_DMACmd(ADC1, ENABLE);
        //ADC_ExternalTrigConvCmd(ADC1, ENABLE);
        ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE);


        /* Enable ADC1 */   
        ADC_Cmd(ADC1, ENABLE);
       
        /* Enable ADC1 reset calibaration register */   
        ADC_ResetCalibration(ADC1);
        /* Check the end of ADC1 reset calibration register */
        while(ADC_GetResetCalibrationStatus(ADC1));

        /* Start ADC1 calibaration */
        ADC_StartCalibration(ADC1);
        /* Check the end of ADC1 calibration */
        while(ADC_GetCalibrationStatus(ADC1));
        规则通道的外部触发转换模式 正常,但注入通道的外部触发转换模式就不行,请问是哪时出错吗?

使用特权

评论回复
地板
zzfyjc|  楼主 | 2018-4-24 11:37 | 只看该作者
TIM_SelectOutputTrigger(TIM1,TIM_TRGOSource_OC4Ref);

使用特权

评论回复
5
magicoctoy| | 2018-4-24 16:15 | 只看该作者
库不对,或者说包含的头文件不对,或者没操作对,不可能没有的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

82

帖子

1

粉丝