#include"stm8s.h"
void Init_ADC1()
{
ADC1_Init( ADC1_CONVERSIONMODE_CONTINUOUS , //配置ADC1工作在连续转换模式
ADC1_CHANNEL_2 , //选择通道2
ADC1_PRESSEL_FCPU_D18, //ADC的工作频率进行系统时钟的18分频
ADC1_EXTTRIG_GPIO , //不使能外部触发产生采样
DISABLE ,
ADC1_ALIGN_RIGHT , //采样数据进行右对齐输出
ADC1_SCHMITTTRIG_CHANNEL2 , //不使能通道施密特
DISABLE
);
ADC1_Cmd(ENABLE); //使能ADC1模块
ADC1_ITConfig(ADC1_IT_EOCIE , ENABLE); //配置ADC1采样数据结束时产生中断
ADC1_StartConversion(); //使ADC开始转换数据
}
void USART_Init()
{
UART1_Init(9600 , //配置串口通讯的波特率为9600
UART1_WORDLENGTH_8D , //配置串口为8位数据通讯
UART1_STOPBITS_1, //配置串口通讯产生1个停止位
UART1_PARITY_NO , //配置串口为无校验
UART1_SYNCMODE_CLOCK_DISABLE , //配置串口为无流控制
UART1_MODE_TX_ENABLE); //使能串口为发送数据模式
UART1_Cmd(ENABLE); //对串口使能
}
void UART_Send(u8 data)
{
while(UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET);
UART1_SendData8(data);
}
void Delay(u16 ms)
{
u16 x , y;
for(y = ms ; y > 0 ;y--)
for(x = 16000 ; x > 0 ; x--);
}
int main()
{
disableInterrupts();
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); //配置系统时钟为1分频,即16MHZ
USART_Init();
Init_ADC1();
enableInterrupts();
while(1)
{
}
}
完整代码请下载附件
ADC连续采样_基于中断.7z
(643.42 KB, 下载次数: 54)
|