打印
[STM8]

stm8s如何 ADC连续采样

[复制链接]
6416|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kgdfntxgt|  楼主 | 2011-12-7 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
那位能帮我把下面的改成连续采样200次 再把200次的平均值输出!
#include <iostm8s207sb.h>

void CLK_init(void)
{
  CLK_CKDIVR = 0x08;         // 16M内部RC经2分频后系统时钟为8M
}

void GPIO_init(void)
{
  PD_DDR = 0x08;             // 配置PD端口的方向寄存器PD3输出
  PD_CR1 = 0x08;             // 设置PD3为推挽输出
  PD_CR2 = 0x80;             // 使能PD7外部中断
}

void EXTI_init(void)
{
  EXTI_CR1 = 0x80;           // PD口下降沿触发中断
}

#pragma vector=0x02
__interrupt void EXTI_PD7_TLI(void)
{
  unsigned int value;
  ADC_CSR &= ~0x80;       // 清除EOC转换结束标志
  ADC_CR1 |= 0x01;           // 开始单次转换
  while(!(ADC_CSR&0x80));    // 等待单次转换完成
  value = ((int)ADC_DRH<<2); // 先读高8位,默认设置数据左对齐
  value |= ADC_DRL;                 // 再读低8位
  while(!UART3_SR_TXE);
  UART3_DR = value;               // 通过UART3发送AD采样结果
  while(!UART3_SR_TXE);
  UART3_DR = value>>8;
}

void ADC_init(void)
{
  ADC_CSR = 0x03;            // ADC输入引脚AIN3
  ADC_CR1 = 0x01;            // ADC开启
}

void UART3_init(void)
{
  UART3_BRR2 = 0x01;
  UART3_BRR1 = 0x34;         // 8M/9600 = 0x341
  UART3_CR2 = 0x0C;          // 允许接收,允许发送
}

void init_devices(void)
{
  asm("sim");
  CLK_init();
  GPIO_init();
  EXTI_init();
  ADC_init();
  UART3_init();
  asm("rim");
}

void main( void )
{
  init_devices();

// 主循环里没有程序需要执行
  while(1);
}
沙发
Lavqing| | 2013-10-9 10:17 | 只看该作者
你这个code可以运行采样成了吗?

使用特权

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

本版积分规则

4

主题

10

帖子

0

粉丝