블루 브리지 컵 삽입식 유니버설 개인 노트 2 (필기)

//ADC 구성 및 대체
PB0은 ADC1에 해당하며, PB0 핀은 ADC 로 재사용 가능IN8 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//에너지 클록 신호 RCCAPB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//입출력 구성 GPIOInitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOB, &GPIO_InitStructure);
.....//ADC 구성
ADC_Cmd(ADC1, ENABLE);//먼저 교정을 복원하고 교정을 시작합니다.//한 가지 주의해야 할 것은 우리가 ADC를 교정하기 전에//반드시 ADC를 ADC 로 사용할 수 있도록 해야 한다는 것이다.Cmd(ADC1, ENABLE);//그렇지 않으면 교정처에 렉이 걸려서 프로그램이 다운됩니다.ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1));
u16 Get_ADC(void) {u16temp; ADC RegularChanelConfig(ADC1, ADC Chanenel 8, 1, ADC SampleTime RegularChanelConfig(ADC1, ADC Chanenenel 8, 1, 1, 1, 1ADCCCCCCCC1, EAAABLE),//프로그램 소프트웨어를 통해 AD 변환 while 변환(ADC GC GGGFlagStycccyyyyycl242414141414141414141, ADCCCCCCCCCCCCCCCCCCCCC ReququququququququququququququququququququququququConvCmd(ADC1, ENABLE), return temp;}
ADC_Value=Get_ADC()*3.3/4096;//stm32f103rbt6의 ADC는 정밀도가 12위(즉 0~4096)이기 때문에 우리가 읽은 AD치 데이터는 12위이고 통속적으로 3.3V를 4096부로 나눈다.sprintf((char *)adc_string,“GET ADC_Value:%.2fV”,ADC_Value); LCD_DisplayStringLine(Line4,adc_string);
//실시간 클록
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);
RTC_SetPrescaler(39999); RTC_WaitForLastTask(); RTC_SetCounter(233600+5560+50); RTC_WaitForLastTask();
void RTC_IRQHandler(void)/RTC 중단 (RTC GetITStatus(RTC IT SEC)!= RESET) {RTC ClearITPendingBit(RTC IT SEC), TimeDisplay = 1; RTC WaitForLastTask(),
} } void Time_Display(uint32 t TimeVar)/RTC 표시 시간 {uint32 t THH = 0, TMM = 0, TSS = 0;if(RTC GetCounter() = = 0x0001517F) {RTC SetCounter(0x0), RTC WaitForLastTask()}
THH = TimeVar/3600; TMM = (TimeVar % 3600)/60; TSS = (TimeVar % 3600) % 60;
sprintf((char *)string2,“Time: %0.2d:%0.2d:%0.2d”, THH, TMM, TSS); LCD_DisplayStringLine(Line9,string2); } while(1) { if(TimeDisplay == 1) { Time_Display(RTC_GetCounter()); TimeDisplay = 0; } }
//직렬 통신
			     1(PA9,PA10),     2(PA2,PA3),
			PA2->TX    ,PA3->RX    。
			  ,                     1,
			       1   ,        RS232 9    ,
			    ,        USB       ,
			              。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//PA2->TX용 송신단 GPIOInitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3->RX는 수신자 GPIOInitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);
void USART_SendString(uint8 t *str)//직렬 송신 데이터 {uint8 t index = 0;do {USART SendData(USART2,str[index]), while(USART GetFlagStatus(USART2,USART FLAG TC) = RESET), index++;while(str[index] != 0);
}
void USART2_IRQHandler(void)//중단,직렬 수신 데이터는 {uint8 t temp, if(USART GetITStatus(USART2·USART IT RXNE)! = RESET) {USART ClearITPeningBt(USART2·USARTT2·USART ART IT IT IT RT RXNNNE);;(USARTTTT2·USARTART2·USARTARTTTTT2·USARTARTARTTTTTT2·USAAAAARTTTTTTTTTTTTTTTTTT2(USATATTTTT수신 완료 플래그 위치} else {USART RXBUF [RXCUNT] = temp;++RXCUNT; }
경고: 여기 USART 사용하지 마세요ITConfig(USART2, USART_IT_RXNE, DISABLE); 그리고 또 엔나블!본인이 직접 측정한 바에 의하면 만약에 이렇게 하면 두 번째 인터럽트 수신(처음일 수도 있음)이 인터럽트된 후에 프로그램은 인터럽트 인터럽트 함수에 계속 걸려서 빠져나갈 수 없습니다!PS: 그리고 위의 두 줄 코드를 로그아웃하고 다운로드합니다.또 취소 취소, 뜻밖에도 됐어!독이 있다!
}
}
//중단//타이머 두 개면 말 안 해도 되겠지.위에 다 언급이 돼있으니까~

좋은 웹페이지 즐겨찾기