嵌入式系统课程设计(温度检测报警系统)(3)

2019-04-21 15:51

DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize

DMA_MemoryDataSize_HalfWord;

DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA1_Channel1, &DMA_InitStructure); /* Enable DMA channel1 */

DMA_Cmd(DMA1_Channel1, ENABLE);

}

void ADC1_Config(void)

{ ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = ENABLE ; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv

ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure);

/* ADC1 regular channel16 configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_16,

ADC_SampleTime_55Cycles5);

ADC_TempSensorVrefintCmd(ENABLE); ADC_DMACmd(ADC1, ENABLE); ADC_Cmd(ADC1, ENABLE); ADC_ResetCalibration(ADC1);

while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1);

while(ADC_GetCalibrationStatus(ADC1));

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

10

=

=

1, }

void USART1_Config(void) {

USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 9600;

USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl USART_InitStructure.USART_Mode

=

USART_Mode_Rx

= |

USART_HardwareFlowControl_None; USART_Mode_Tx;

USART_Init(USART1, &USART_InitStructure);

//发送使能

// USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //接收使能 // USART_ITConfig(USART1,USART_IT_TXE,ENABLE); }

static uint8_t USART_Scanf(uint32_t value)//字符串读取函数 {

uint32_t index = 0; uint32_t tmp[2] = {0, 0};

while (index < 2) {

/* Loop until RXNE = 1 */

while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) ==RESET) { }

USART_Cmd(USART1,ENABLE);

//启动串口

11

}

tmp[index++] = (USART_ReceiveData(USART1));

if ((tmp[index - 1] < 0x30) || (tmp[index -1] > 0x39)) { }

printf(\请输入有效数字 0 到 9 -->: \index--;

index = (tmp[1] - 0x30) + ((tmp[0] - 0x30) * 10); /* Checks */ if (index > value) { }

return index; }

void Time_Regulate(rtc_time *tm)//时间设定函数 {

uint32_t Tmp_HH =0xFF, Tmp_MI = 0xFF, Tmp_SS = 0xFF; uint32_t Tmp_up = 0xff,Tmp_low = 0xff; printf(\设定温度范围\ printf(\输入温度上限: \

while (Tmp_up == 0xFF) { }

printf(\温度上限为 %0.2d C\\n\\r%upper_bound = Tmp_up;

Tmp_up = USART_Scanf(99);

printf(\请输入有效数字 0 到 %d\return 0xFF;

12

//-------------------

printf(\输入温度下限: \

while (Tmp_low == 0xFF) { }

printf(\温度下限为 %0.2d C\\n\\r\

lower_bound = Tmp_low;

Tmp_HH = 0xFF;

printf(\设定小时: \

while (Tmp_HH == 0xFF) {

Tmp_HH = USART_Scanf(23); }

printf(\设定小时为 %d\\n\\r\

tm->tm_hour= Tmp_HH;

Tmp_MI = 0xFF;

printf(\设定分钟: \

while (Tmp_MI == 0xFF)

printf(\设定时间 \

Tmp_low = USART_Scanf(99);

13

{

Tmp_MI = USART_Scanf(59); }

printf(\设定分钟为 %d\\n\\r\

tm->tm_min= Tmp_MI;

Tmp_SS = 0xFF;

printf(\设定秒: \

while (Tmp_SS == 0xFF) {

Tmp_SS = USART_Scanf(59); }

printf(\设定秒为 %d\\n\\r\

tm->tm_sec= Tmp_SS; }

int fputc(int ch, FILE *f)//重定向函数 { }

USART_SendData(USART1, (unsigned char) ch); // while (!(USART1->SR & USART_FLAG_TXE));

while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET); return (ch);

/*****************************主函数

***********************************************/ int main(void) {

#ifdef DEBUG #endif

14


嵌入式系统课程设计(温度检测报警系统)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:已加 计算机硬件维护工程师试题和答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: