欢迎来到天天文库
浏览记录
ID:40491466
大小:17.80 KB
页数:8页
时间:2019-08-03
《STM8单片机ADC、Timer、USART寄存器直接操作实用例程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、STM8单片机ADC、Timer、USART实用例程这是一个我花了较长时间摸索出来的STM8L-051的例程,它控制LED灯,Timer2定时100us进入中断,软件启动ADC,采样10次后取平均,将结果通过UASART发送至PC机,在超级终端上显示的实用程序,因其内存极小,不能用printf等函数,因此对于想用这款资源极少的MCU的开发者来说,读这篇文章会大大节约你的研发时间。有不会的问题请发邮件johnwa@21cn.com。#include#include"stm8l15x.h"#include"iostm8l051f3.h"#de
2、fineLED_GPIO_PORTGPIOA#defineLED_GPIO_PINSGPIO_Pin_2
3、GPIO_Pin_3/*Privatefunctionprototypes-----------------------------------------------*/#defineADC1_DR_ADDRESS((uint16_t)0x5344)#defineBUFFER_SIZE((uint8_t)0x02)#defineBUFFER_ADDRESS((uint16_t)(&Buffer))#defineASCII_NUM_0((uint8_t
4、)48)#defineADC_RATIO((uint16_t)806)/*ADC_RATIO=(3.3*1000*1000)/4095*/#defineSampleADC((uint8_t)0x0A)/*Privatevariables---------------------------------------------------------*/uint8_tBuffer[4]={0,0,0,0};uint16_tADCdata=0;uint16_tADCvalue=0;unsignedcharLED=1;unsignedcharc=8;uint16
5、_tacode=1234;//43"+"0x2B;voidDelay(__IOuint16_tnCount){/*DecrementnCountvalue*/while(nCount!=0){nCount--;}}//intputchar(intc)//{//while((USART1_SR&0x80)==0x00);//UART2_sendchar((u8)c);//return(c);//}staticvoidCLK_Config(void){/*SelectHSIassystemclocksource*/CLK_SYSCLKSourceSwitchC
6、md(ENABLE);CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);/*Highspeedexternalclockprescaler:1*/CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);while(CLK_GetSYSCLKSource()!=CLK_SYSCLKSource_HSI){}/*EnableADC1clock*/CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,ENABLE);/*EnableDMA1clock*///CLK_P
7、eripheralClockConfig(CLK_Peripheral_DMA1,ENABLE);/*EnableTIM2clock*/CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,ENABLE);CLK_PeripheralClockConfig(CLK_Peripheral_USART1,ENABLE);}staticvoidGPIO_Config(void){PC_DDR=0X20;PC_CR1=0X20;PA_DDR=0X0C;PA_CR1=0X0C;}staticvoidUSART1_Config(v
8、oid){//ADCvalue=USART1_DR;USART1_BRR2=0x03;USART1_BRR1=0x68;//16M/9600=683USART1_CR2=0x0C;//Transmitter&receiverenable}staticvoidADC_Config(void){ADC1_CR2=0x22;//risignedge,softwaestart,samplingtime16ADCclockADC1_SQR3=0x80;//ADC=15channelADC1_TRIGR1=0x10;//useinternalref,samplingt
9、ime16ADCclockforRefRI_ASCR1=0x00;
此文档下载收益归作者所有