[STM32F1] stm32f103 AD 触发

[复制链接]
1364|17
 楼主| bqyj 发表于 2021-10-11 23:48 | 显示全部楼层 |阅读模式
本来想设置TIME1CC4来触发AD转换的,所以选用 注入通道的外部触发转换模式 ,在这句   ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE);完成后, ADCx->CR2  | =CR2_JEXTTRIG_JSWSTART_Set ;   CR2_JEXTTRIG_JSWSTART_Set  头文件定的为 0x00208000;    这些都没错,但仿真后显示的,只有ADC1->CR2   ,只有低16处理有效,高16位处理无效?
 楼主| bqyj 发表于 2021-10-11 23:49 | 显示全部楼层
不知道为什么,而且直接 ADC->CR2操作,编译又说无这个寄存器
wyjie 发表于 2021-10-11 23:51 | 显示全部楼层
到头文件下面找找对应的寄存器看看
 楼主| bqyj 发表于 2021-10-11 23:53 | 显示全部楼层
刚好看了,高位是可以操作的,只是那一样不能,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));
        规则通道的外部触发转换模式 正常,但注入通道的外部触发转换模式就不行,请问是哪时出错吗?
 楼主| bqyj 发表于 2021-10-11 23:57 | 显示全部楼层
TIM_SelectOutputTrigger(TIM1,TIM_TRGOSource_OC4Ref);
xxmmi 发表于 2021-10-11 23:59 | 显示全部楼层
库不对,或者说包含的头文件不对,或者没操作对,不可能没有的
juventus9554 发表于 2021-10-12 21:42 | 显示全部楼层
分开进行比较
renyaq 发表于 2021-10-12 21:45 | 显示全部楼层
按理说没有问题额
heweibig 发表于 2021-10-12 21:48 | 显示全部楼层
应该是读取数据有问题了
jiajs 发表于 2021-10-12 21:51 | 显示全部楼层
分两次进行比较
wyjie 发表于 2021-10-12 21:54 | 显示全部楼层
可能就是程序的问题
 楼主| bqyj 发表于 2021-10-12 21:56 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
labasi 发表于 2021-11-3 13:52 | 显示全部楼层
其他方式不可以吗
paotangsan 发表于 2021-11-3 13:54 | 显示全部楼层
分次进行比较即可
renzheshengui 发表于 2021-11-3 14:03 | 显示全部楼层
触发源可以有很多种
wakayi 发表于 2021-11-3 14:05 | 显示全部楼层
为什么 不能一次比较呢
tpgf 发表于 2021-11-3 14:08 | 显示全部楼层
代码都是乱码啊
wowu 发表于 2021-11-3 14:12 | 显示全部楼层
可能读取数据有问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

390

主题

4526

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部