打印
[STM8]

新手 刚写的1s开启一次AD转换程序 希望大家提意见改进

[复制链接]
2275|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lmcici1314|  楼主 | 2011-7-27 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "main.h"

main()
{
CLK_Init();
GPIO_Init();
ADC_Init();
TIM1_Init();
while(1)
{
   while (!(TIM1->SR1&0x01));      // wait until reach 1s
  TIM1->SR1 &=~0x01;
  ADC1->CR1 |= ADC1_CR1_ADON ;     // enable AD converter
}
}

void CLK_Init (void)
{
CLK->ICKR |= CLK_ICKR_HSIEN;
while(!(CLK->ICKR&0x02));
CLK->CKDIVR = CLK_CKDIVR_HSIDIV;       //Fcpu=Fmaster=2MHz
}

void GPIO_Init (void)                     // IO collocation
{
GPIOD->DDR |= 0xff;
GPIOD->CR1 |= 0xff;
GPIOD->CR2 = 0x00;
GPIOB->DDR |= 0xff;
GPIOB->CR1 |= 0xff;
GPIOB->CR2 = 0x00;
}

void ADC_Init (void)
{
u8 i;
ADC1->CSR = 0x23;                /* select AIN3 and enable EOC interrupt */
ADC1->CR1 = 0x01;        /* single mode and awake the ADC */
ADC1->CR2 = 0x08;               /* disable extern interrupt and right data alignment  */
ADC1->CR3 = 0x00;               /* disable data buffer */
for(i=100;i>0;i--);         /* ensure the power of ADC is ready */
}

void TIM1_Init (void)
{
TIM1->PSCRH = 0x27;
TIM1->PSCRL = 0x0f;    // Fck_cnt=Fck_psc/10000=200Hz
TIM1->CNTRH = 0x0;
TIM1->CNTRL = 0x0;
TIM1->ARRH = 0x0;
TIM1->ARRL = 0xc8;      // ARR=200,timing 1s
TIM1->IER &=~0x01;      // disable update interrupt
TIM1->CR1 |= TIM1_CR1_CEN;    //enable couter
}

@far @interrupt void ADC1_EOC_AW_IRQHanlder (void)
{
ADC1->CSR &=~0x80;
GPIOD->ODR = ADC1->DRH;
GPIOB->ODR = ADC1->DRL;
return;
}
沙发
lmcici1314|  楼主 | 2011-7-27 15:43 | 只看该作者
:'(被鄙视了么 谁来指点下么  还有如何在ad转换时加上平滑滤波功能 来帮下么

使用特权

评论回复
板凳
lmcici1314|  楼主 | 2011-7-28 08:36 | 只看该作者
这是我后面加的平滑滤波的实现 求指点 求优化啊
// through calculate average of data to achieve smoothing filtering
@far @interrupt void ADC1_EOC_AW_IRQHanlder (void)
{
        ADC1->CSR &=~0x80;
        if(i<10)
        {
                i++;
                AvgH += ADC1->DRH;
                AvgL += ADC1->DRL;
        }
        else
        {
                i=0;
                GPIOD->ODR = AvgH/10;
                GPIOB->ODR = AvgL/10;
        }
        return;
}

使用特权

评论回复
地板
waterbaby2011| | 2016-8-25 08:42 | 只看该作者
效果如何啊

使用特权

评论回复
5
yichunshan| | 2016-8-25 08:57 | 只看该作者

使用特权

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

本版积分规则

1

主题

34

帖子

1

粉丝