打印
[STM32F1]

stm32f103 AD 触发

[复制链接]
1069|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));
        规则通道的外部触发转换模式 正常,但注入通道的外部触发转换模式就不行,请问是哪时出错吗?

使用特权

评论回复
5
bqyj|  楼主 | 2021-10-11 23:57 | 只看该作者
TIM_SelectOutputTrigger(TIM1,TIM_TRGOSource_OC4Ref);

使用特权

评论回复
6
xxmmi| | 2021-10-11 23:59 | 只看该作者
库不对,或者说包含的头文件不对,或者没操作对,不可能没有的

使用特权

评论回复
7
juventus9554| | 2021-10-12 21:42 | 只看该作者
分开进行比较

使用特权

评论回复
8
renyaq| | 2021-10-12 21:45 | 只看该作者
按理说没有问题额

使用特权

评论回复
9
heweibig| | 2021-10-12 21:48 | 只看该作者
应该是读取数据有问题了

使用特权

评论回复
10
jiajs| | 2021-10-12 21:51 | 只看该作者
分两次进行比较

使用特权

评论回复
11
wyjie| | 2021-10-12 21:54 | 只看该作者
可能就是程序的问题

使用特权

评论回复
12
bqyj|  楼主 | 2021-10-12 21:56 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
13
labasi| | 2021-11-3 13:52 | 只看该作者
其他方式不可以吗

使用特权

评论回复
14
paotangsan| | 2021-11-3 13:54 | 只看该作者
分次进行比较即可

使用特权

评论回复
15
renzheshengui| | 2021-11-3 14:03 | 只看该作者
触发源可以有很多种

使用特权

评论回复
16
wakayi| | 2021-11-3 14:05 | 只看该作者
为什么 不能一次比较呢

使用特权

评论回复
17
tpgf| | 2021-11-3 14:08 | 只看该作者
代码都是乱码啊

使用特权

评论回复
18
wowu| | 2021-11-3 14:12 | 只看该作者
可能读取数据有问题了

使用特权

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

本版积分规则

390

主题

4526

帖子

2

粉丝