STM8单片机ADC应用(IAR)

来源:本站
导读:目前正在解读《STM8单片机ADC应用(IAR)》的相关信息,《STM8单片机ADC应用(IAR)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM8单片机ADC应用(IAR)》的详细说明。
简介:本文给大家介绍了STM8单片机ADC应用(IAR)。

STM8片上集成了10位逐次比较型模数转换器,在开发板上有个电位器接到了AIN3,但没有可以显示数据的LED数码管或LCD液晶显示屏,怎么办呢?可以把AD采集数据通过UART发送到电脑上显示。

#i nclude 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);}

在本例中仅使用了ADC的单次转换模式,每按一次按键进行一次AD转换,并把转换结果通过UART发送,这样可以在电脑上通过超级终端或串口调试软件查看数据。

通过这次测试,还发现一个现象,如果把清除EOC转换结束标志放在读取数据之后,那么在下次启动单次转换后,EOC标志位会自动置位,此时必须人为的等待7us后才能读到正确的数据,否则只能读到上一次的转换数据,可能这是STM8的ADC与其他MCU不同之处。

提醒:《STM8单片机ADC应用(IAR)》最后刷新时间 2024-03-14 00:57:54,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STM8单片机ADC应用(IAR)》该内容的真实性请自行鉴别。