}
else
{
break;
}
}
DBG_Printf ( "通道 %c 采集到的实时电压是: \n\n" , ADC_Channel );
unmask_irq ( INT_GPT );
while ( 1 )
{
Serial_Input = serial_getc (DEBUG_Port);
if (Serial_Input == ASCII_ESC)
{
mask_irq (INT_GPT);
DBG_Printf ( "\n" );
break ;
中断处理流程:
图3.2 中断处理流程
中断处理程序:
void INT_GPT_Handle ( )
{
U16 temp = ADC_msk_Active | ADC_msk_Start |ADC_msk_VREFB \
& ~ADC_msk_ASE ;
float voltage;
U8 string[10];
GPT1_Mask;
switch (ADC_Channel)
{
case '1':
temp |= ADC_msk_AD0;
break;
case '2':
temp |= ADC_msk_AD1;
break;
case '3':
temp |= ADC_msk_AD2;
break;
case '4':
temp |= ADC_msk_AD3;
break;
default:
break;
}
WriteUCB(ADC_reg_Control, temp); //触发采样
voltage = ((float)ADCRead * ADC_Vref ) / ADC_MAX; //读取采样值并转换为电压值
sprintf (string,"%6.3fV\t",voltage);
serial_puts (DEBUG_Port, (U8*)string);
GPT1_ClearInt(temp);
GPT1_Unmask;
}
3.3 串口软件设计
3.3.1 串口设置程序
发送器Tx 从MCU 接收并行数据, 存入Tx FIFO, 然后在字符中加入起始位、奇偶校验位、停止位后按照设置的波特率串行(LSB first)发送出去。
将串口波特率设置为9600,转换为十优尔进制后分别将高低八位写入波特率寄存器。设置数据位比特数为8位,无奇偶校验位,停止位1,写入行控制寄存器LCR。当发送FIFO为空时(查看行状态寄存器LSR的相关状态位LSR[5]),把要发送的数据写入发送FIFO,传送到主机上。串口设置程序详见附录B 。 ARM嵌入式系统的数据采集传输系统研究+源程序(14):http://www.youerw.com/tongxin/lunwen_2633.html