- #include "stm32f4xx.h" 
- #include "stm32f4xx_gpio.h" 
- #include "stm32f4xx_rcc.h" 
- #include "stm32f4xx_usart.h" 
-   
- void wait() { 
-   volatile int i; 
-   for(i = 0; i < 200000; ++i); 
- } 
-   
- void wait_min() { 
-   volatile int i; 
-   for(i = 0; i < 10000; ++i); 
- } 
-   
- int main(int argc, char **argv) { 
-   RCC_AHB1PeriphClockCmd( 
-     RCC_AHB1Periph_GPIOD, 
-     ENABLE 
-   ); 
-   
-   RCC_AHB1PeriphClockCmd( 
-     RCC_AHB1Periph_GPIOC, 
-     ENABLE 
-   ); 
-   
-   RCC_APB2PeriphClockCmd( 
-     RCC_APB2Periph_USART6, 
-     ENABLE 
-   ); 
-   
-   GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_USART6); 
-   
-   GPIO_InitTypeDef led, usartPin; 
-   
-   led.GPIO_Mode = GPIO_Mode_OUT; 
-   led.GPIO_OType = GPIO_OType_PP; 
-   led.GPIO_Pin = GPIO_Pin_12; 
-   led.GPIO_PuPd = GPIO_PuPd_UP; 
-   led.GPIO_Speed = GPIO_Speed_50MHz; 
-   
-   GPIO_Init(GPIOD, &led); 
-   
-   usartPin.GPIO_OType = GPIO_OType_PP; 
-   usartPin.GPIO_PuPd = GPIO_PuPd_UP; 
-   usartPin.GPIO_Mode = GPIO_Mode_AF; 
-   usartPin.GPIO_Pin = GPIO_Pin_6; 
-   usartPin.GPIO_Speed = GPIO_High_Speed; 
-   
-   GPIO_Init(GPIOC, &usartPin); 
-   
-   USART_InitTypeDef usart; 
-   
-   USART_StructInit(&usart); 
-   USART_Init(USART6, &usart); 
-   USART_Cmd(USART6, ENABLE); 
-   
-   while(1) { 
-     GPIO_WriteBit(GPIOD, GPIO_Pin_12, Bit_SET); 
-     USART_SendData(USART6, 'X'); 
-     wait_min(); 
-     GPIO_WriteBit(GPIOD, GPIO_Pin_12, Bit_RESET); 
-     wait(); 
-   } 
- } 
-   
				I2luY2x1ZGUgInN0bTMyZjR4eC5oIgojaW5jbHVkZSAic3RtMzJmNHh4X2dwaW8uaCIKI2luY2x1ZGUgInN0bTMyZjR4eF9yY2MuaCIKI2luY2x1ZGUgInN0bTMyZjR4eF91c2FydC5oIgoKdm9pZCB3YWl0KCkgewogIHZvbGF0aWxlIGludCBpOwogIGZvcihpID0gMDsgaSA8IDIwMDAwMDsgKytpKTsKfQoKdm9pZCB3YWl0X21pbigpIHsKICB2b2xhdGlsZSBpbnQgaTsKICBmb3IoaSA9IDA7IGkgPCAxMDAwMDsgKytpKTsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAgUkNDX0FIQjFQZXJpcGhDbG9ja0NtZCgKICAgIFJDQ19BSEIxUGVyaXBoX0dQSU9ELAogICAgRU5BQkxFCiAgKTsKCiAgUkNDX0FIQjFQZXJpcGhDbG9ja0NtZCgKICAgIFJDQ19BSEIxUGVyaXBoX0dQSU9DLAogICAgRU5BQkxFCiAgKTsKCiAgUkNDX0FQQjJQZXJpcGhDbG9ja0NtZCgKICAgIFJDQ19BUEIyUGVyaXBoX1VTQVJUNiwKICAgIEVOQUJMRQogICk7CgogIEdQSU9fUGluQUZDb25maWcoR1BJT0MsIEdQSU9fUGluU291cmNlNiwgR1BJT19BRl9VU0FSVDYpOwoKICBHUElPX0luaXRUeXBlRGVmIGxlZCwgdXNhcnRQaW47CgogIGxlZC5HUElPX01vZGUgPSBHUElPX01vZGVfT1VUOwogIGxlZC5HUElPX09UeXBlID0gR1BJT19PVHlwZV9QUDsKICBsZWQuR1BJT19QaW4gPSBHUElPX1Bpbl8xMjsKICBsZWQuR1BJT19QdVBkID0gR1BJT19QdVBkX1VQOwogIGxlZC5HUElPX1NwZWVkID0gR1BJT19TcGVlZF81ME1IejsKCiAgR1BJT19Jbml0KEdQSU9ELCAmbGVkKTsKCiAgdXNhcnRQaW4uR1BJT19PVHlwZSA9IEdQSU9fT1R5cGVfUFA7CiAgdXNhcnRQaW4uR1BJT19QdVBkID0gR1BJT19QdVBkX1VQOwogIHVzYXJ0UGluLkdQSU9fTW9kZSA9IEdQSU9fTW9kZV9BRjsKICB1c2FydFBpbi5HUElPX1BpbiA9IEdQSU9fUGluXzY7CiAgdXNhcnRQaW4uR1BJT19TcGVlZCA9IEdQSU9fSGlnaF9TcGVlZDsKCiAgR1BJT19Jbml0KEdQSU9DLCAmdXNhcnRQaW4pOwoKICBVU0FSVF9Jbml0VHlwZURlZiB1c2FydDsKCiAgVVNBUlRfU3RydWN0SW5pdCgmdXNhcnQpOwogIFVTQVJUX0luaXQoVVNBUlQ2LCAmdXNhcnQpOwogIFVTQVJUX0NtZChVU0FSVDYsIEVOQUJMRSk7CgogIHdoaWxlKDEpIHsKICAgIEdQSU9fV3JpdGVCaXQoR1BJT0QsIEdQSU9fUGluXzEyLCBCaXRfU0VUKTsKICAgIFVTQVJUX1NlbmREYXRhKFVTQVJUNiwgJ1gnKTsKICAgIHdhaXRfbWluKCk7CiAgICBHUElPX1dyaXRlQml0KEdQSU9ELCBHUElPX1Bpbl8xMiwgQml0X1JFU0VUKTsKICAgIHdhaXQoKTsKICB9Cn0K