OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2970|回复: 2

有谁用过STM8定时器输出比较触发ADC转换

[复制链接]

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
发表于 2017-10-16 19:14:25 | 显示全部楼层 |阅读模式
5金钱
有谁用过STM8定时器输出比较触发ADC转换,主要是定时器应该怎么配置,有用过的帮忙解答一下,谢谢

最佳答案

查看完整内容[请看2#楼]

在网上找到相关的寄存器配置,有需要的朋友可以参考一下 *** ADC INITIALIZATION *** TIM1->ARRH= (u8)(AUTORELOAD >> 8); // set autoreload register for trigger period TIM1->ARRL= (u8)(AUTORELOAD); // TIM1->CCR1H= (u8)((AUTORELOAD-AD_STAB) >> 8); ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
 楼主| 发表于 2017-10-16 19:14:26 | 显示全部楼层
本帖最后由 天空淡云 于 2017-10-20 14:51 编辑

在网上找到相关的寄存器配置,有需要的朋友可以参考一下                                                                *** ADC INITIALIZATION ***
        TIM1->ARRH= (u8)(AUTORELOAD >> 8);                          // set autoreload register for trigger period
        TIM1->ARRL= (u8)(AUTORELOAD);                                            //
        TIM1->CCR1H= (u8)((AUTORELOAD-AD_STAB) >> 8);   // set compare register for trigger period
        TIM1->CCR1L= (u8)(AUTORELOAD-AD_STAB);
        TIM1->CR1|= TIM1_CR1_ARPE;                                                    // auto reload register is buferred
        
        TIM1->CR2= (4<<4) & TIM1_CR2_MMS;                            // CC1REF is used as TRGO
        TIM1->CCMR1= (6<<4) & TIM1_CCMR_OCM;                  // CC1REF in PWM 1 mode
        TIM1->IER|= TIM1_IER_CC1IE;                                              // CC1 interrupt enable
        TIM1->CCER1|= TIM1_CCER1_CC1P;                                    // CC1 negative polarity
        TIM1->CCER1|= TIM1_CCER1_CC1E;                                    // CC1 output enable
        TIM1->BKR|= TIM1_BKR_MOE;                                                                                                
        
        TIM1->SMCR|=  TIM1_SMCR_MSM;                                            // synchronization of TRGO with ADC
        
        TIM1->CR1|= TIM1_CR1_CEN;                                                      // timer 1 enable
               
        ADC1->CSR= ADC1_CSR_EOCIE | (9 & ADC1_CSR_CH);  // ADC EOC interrupt enable, channel 9
        ADC1->CR1= 4<<4 & ADC1_CR1_SPSEL;                                  // master clock/8, single conversion
        ADC1->CR2= ADC1_CR2_EXTTRIG;                                                  // external trigger on timer 1 TRGO, left alignment
        ADC1->TDRH= 2;                                                                                        // disable Schmitt trigger on AD input 9
        ADC1->TDRL= 0;                                  //

  // init ADC variables
        AD_samp= 0;                                                                          // number of stored samples 0
        ADInit= TRUE;                                   // ADC initialized
        ADSampRdy= FALSE;                               // No sample
        
        ADC1->CR1|= ADC1_CR1_ADON;                                                    // ADC on

        enableInterrupts();                                                                        // enable all interrupts [/mw_shl_code]
回复

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2017-10-16 20:50:17 | 显示全部楼层
这个没用过,帮顶!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表