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