21ic电子技术开发论坛 单片机与嵌入式系统 ST MCU STM8S 用TIME1 来触发 ADC1转换
发新帖我要提问
返回列表
打印

STM8S 用TIME1 来触发 ADC1转换

[复制链接]
5830|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jpj1234|  楼主 | 2010-2-6 10:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我把STM8 固件库中的TIME1触发 ADC2 的列程,翻译成 TIME1触发ADC1,可失败了!请大家帮我找找原因!
void main(void)
{
    /*  Init GPIO for ADC2 */
    GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
    /* Init GPIO for LED  */
    GPIO_Init(LEDS_PORT, (LED1_PIN |LED2_PIN |LED3_PIN |LED4_PIN), GPIO_MODE_OUT_PP_LOW_FAST);
    GPIO_Init(GPIOG, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST);
    ADC2_DeInit();
    enableInterrupts();
    /* Configure the conversion mode and the channel to convert  */
    ADC2_ConversionConfig(ADC2_CONVERSIONMODE_CONTINUOUS, ADC2_CHANNEL_3, ADC2_ALIGN_RIGHT);
    /* Configure the schmitt trigger channel and state */
    ADC2_SchmittTriggerConfig(ADC2_SCHMITTTRIG_CHANNEL3, DISABLE);
    /* Enable the ADC2 peripheral */
    ADC2_Cmd(ENABLE);
    /* Enable EOC interrupt */
    ADC2_ITConfig(ENABLE);
    /* Configure the TIM1 Master/Slave mode */
    TIM1_SelectMasterSlaveMode(ENABLE);
    /*Configure the ADC2 external trigger */
    ADC2_ExternalTriggerConfig(ADC2_EXTTRIG_TIM, ENABLE);
    /* Trigger the conversion */
    TIM1_SelectOutputTrigger(TIM1_TRGOSOURCE_ENABLE);
    TIM1_Cmd(ENABLE);
   /* The LEDs are changed in the interrupt routine */
    while (1);
}

以上是我copy过来的,用示波器看过,正确的!

以下是我搬过来修改的程序,是主程序中的一段:

ADC1_DeInit();
//////////////////////////////////////
_asm("rim");
////////////////////////////////////
     /* Configure the conversion mode and the channel to convert  */
     ADC1_ConversionConfig(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_4, ADC1_ALIGN_LEFT);
    /* Configure the schmitt trigger channel and state */
    ADC1_SchmittTriggerConfig(ADC1_SCHMITTTRIG_ALL, DISABLE);
  
  ADC1_ScanModeCmd(ENABLE);
    /* Enable the ADC2 peripheral */
    ADC1_Cmd(ENABLE);
    /* Enable EOC interrupt */

  ADC1_ITConfig(ADC1_IT_EOC, ENABLE);
  
    /* Configure the TIM1 Master/Slave mode */
    TIM1_SelectMasterSlaveMode(ENABLE);
    /*Configure the ADC2 external trigger */
    ADC1_ExternalTriggerConfig(ADC1_EXTTRIG_TIM, ENABLE);
    /* Trigger the conversion */
    TIM1_SelectOutputTrigger(TIM1_TRGOSOURCE_ENABLE);
    TIM1_Cmd(ENABLE);
沙发
jpj1234|  楼主 | 2010-2-6 10:48 | 只看该作者
被充一下,我ADC1用的扫描模式

使用特权

评论回复
板凳
汉之云| | 2010-2-6 12:52 | 只看该作者
看你的描述似乎只换程序没提换芯片,你要确认你所用的STM8要有ADC1。

至少到目前为止,STM8没有同时具备ADC1和ADC2的芯片

使用特权

评论回复
地板
jpj1234|  楼主 | 2010-2-6 12:58 | 只看该作者
我当然换了,芯片喽!他的列程用了207,我用的芯片为105

使用特权

评论回复
5
jpj1234|  楼主 | 2010-2-6 13:07 | 只看该作者
好像我调通了。可是不是我想要用的结果!

我想用TIME1 产生的TRGO  事件的频率来控制ADC1 采样的频率!

可这个列程只是TIME1 产生的TRGO  事件触发一个连继采样的ADC, 第二次采样的时间不可控!

使用特权

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

本版积分规则

6

主题

15

帖子

0

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