/** * @brief Configure USART peripheral * @param None * @retval None */ static void USART_Config(void) { /* High speed internal clock prescaler: 1*/ CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); /* EVAL COM (USARTx) configuration -----------------------------------------*/ /* USART configured as follow: - BaudRate = 9600 baud - Word Length = 8 Bits - One Stop Bit - No parity - Receive and transmit enabled */ STM_EVAL_COMInit(COM1, (uint32_t)9600, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx)); /* Set Prescaler*/ USART_SetPrescaler(EVAL_COM1, 0x1); USART_IrDAConfig(EVAL_COM1, USART_IrDAMode_Normal); USART_IrDACmd(EVAL_COM1, ENABLE); }
/** * @brief Main program * @param None * @retval None */ int main(void) { /* System Clocks Configuration */ RCC_Configuration(); /* Initialize the LCD */ STM3210C_LCD_Init(); /* Clear the LCD */ LCD_Clear(White); /* Set the LCD Text Color */ LCD_SetTextColor(Black); printf(" STM3210C-EVAL \n"); printf("Irda receive example\n"); printf("Set JP16 to IRXD\n\n"); /* Configure the GPIO ports */ GPIO_Configuration(); ////////////////////////////////////////////////////// NVIC_Configuration(); ////////////////////////////////////////////////////// /* Initialize Leds mounted on STM3210X-EVAL board */ STM_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); /* USARTy configuration ------------------------------------------------------*/ /* USARTy configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 115200; 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_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Configure the USARTy */ USART_Init(USARTy, &USART_InitStructure); /* Enable the USARTy */ USART_Cmd(USARTy, ENABLE); /* Set the USARTy prescaler */ USART_SetPrescaler(USARTy, 0x1); /* Configure the USARTy IrDA mode */ USART_IrDAConfig(USARTy, USART_IrDAMode_Normal); /* Enable the USARTy IrDA mode */ USART_IrDACmd(USARTy, ENABLE); ////////////////////////////////////////////////////////////////////////// TIM_TimeBaseStructure.TIM_Period = 4095; TIM_TimeBaseStructure.TIM_Prescaler = 10; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* Output Compare Toggle Mode configuration: Channel1 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = speed; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM3, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable); /* Output Compare Toggle Mode configuration: Channel2 */ TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = speed; TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Disable); /* Output Compare Toggle Mode configuration: Channel3 */ TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = speed; TIM_OC3Init(TIM3, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Disable); /* Output Compare Toggle Mode configuration: Channel4 */ TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = speed; TIM_OC4Init(TIM3, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Disable); /* TIM enable counter */ TIM_Cmd(TIM3, ENABLE); /* TIM IT enable */ TIM_ITConfig(TIM3,TIM_IT_Update | TIM_IT_CC1,ENABLE); ////////////////////////////////////////////////////////// while (1) { /* Wait until a byte is received */ while(USART_GetFlagStatus(USARTy, USART_FLAG_RXNE) == RESET) { } /* Read the received byte */ data = USART_ReceiveData(USARTy); //printf("data = %d\n",data); if(data == 0xff) { while(USART_GetFlagStatus(USARTy, USART_FLAG_RXNE) == RESET) { } ReceivedData = (JOY_State_TypeDef)USART_ReceiveData(USARTy); switch(ReceivedData) { case JOY_UP: printf("---JOY_UP---\n"); funcNum = 1; break; case JOY_DOWN: printf("---JOY_DOWN---\n"); funcNum = 2; break; case JOY_LEFT: printf("---JOY_LEFT---\n"); funcNum = 3; break; case JOY_RIGHT: printf("---JOY_RIGHT---\n"); funcNum = 4; break; case JOY_CENTER: printf("---JOY_CENTER---\n"); break; case JOY_NONE: // LCD_ClearLine(Line5); break; default: break; } } else if(data == 0xee) { while(USART_GetFlagStatus(USARTy, USART_FLAG_RXNE) == RESET) { } value = USART_ReceiveData(USARTy); speed = value<<4; //printf("\n speed = %d\n",speed) ; } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f10x_xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file */ /* System Clocks Configuration */ RCC_Configuration(); /* Configure the GPIO ports */ GPIO_Configuration(); /* Initialize Leds mounted on STM3210X-EVAL board */ STM_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); /* USARTy configuration ------------------------------------------------------*/ /* USARTy configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 115200; 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_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Configure the USARTy */ USART_Init(USARTy, &USART_InitStructure); /* Enable the USARTy */ USART_Cmd(USARTy, ENABLE); /* Set the USARTy prescaler */ USART_SetPrescaler(USARTy, 0x1); /* Configure the USARTy IrDA mode */ USART_IrDAConfig(USARTy, USART_IrDAMode_Normal); /* Enable the USARTy IrDA mode */ USART_IrDACmd(USARTy, ENABLE); while (1) { /* Wait until a byte is received */ while(USART_GetFlagStatus(USARTy, USART_FLAG_RXNE) == RESET) { } /* Read the received byte */ ReceivedData = (JOYState_TypeDef)USART_ReceiveData(USARTy); switch(ReceivedData) { case JOY_UP: STM_EVAL_LEDOn(LED1); STM_EVAL_LEDOff(LED2); STM_EVAL_LEDOff(LED3); STM_EVAL_LEDOff(LED4); break; case JOY_DOWN: STM_EVAL_LEDOn(LED2); STM_EVAL_LEDOff(LED1); STM_EVAL_LEDOff(LED3); STM_EVAL_LEDOff(LED4); break; case JOY_LEFT: STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOff(LED1); STM_EVAL_LEDOff(LED2); STM_EVAL_LEDOff(LED4); break; case JOY_RIGHT: STM_EVAL_LEDOn(LED4); STM_EVAL_LEDOff(LED1); STM_EVAL_LEDOff(LED2); STM_EVAL_LEDOff(LED3); break; case JOY_SEL: STM_EVAL_LEDOn(LED1); STM_EVAL_LEDOn(LED2); STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOn(LED4); break; case JOY_NONE: break; default: break; } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { /* System Clocks Configuration */ RCC_Configuration(); /* NVIC configuration */ NVIC_Configuration(); /* Configure the GPIO ports */ GPIO_Configuration(); /* Configure the EXTI Controller */ EXTI_Configuration(); /* SC_USART configuration ----------------------------------------------------*/ /* SC_USART configured as follow: - Word Length = 9 Bits - 0.5 Stop Bit - Even parity - BaudRate = 12096 baud - Hardware flow control disabled (RTS and CTS signals) - Tx and Rx enabled - USART Clock enabled - USART CPOL Low - USART CPHA on first edge - USART Last Bit Clock Enabled */ /* SC_USART Clock set to 4.5MHz (PCLK1 = 36 MHZ / 8) */ USART_SetPrescaler(SC_USART, 0x04); /* SC_USART Guard Time set to 2 Bit */ USART_SetGuardTime(SC_USART, 0x2); USART_ClockInitStructure.USART_Clock = USART_Clock_Enable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_1Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Enable; USART_ClockInit(SC_USART, &USART_ClockInitStructure); USART_InitStructure.USART_BaudRate = 12096; USART_InitStructure.USART_WordLength = USART_WordLength_9b; USART_InitStructure.USART_StopBits = USART_StopBits_1_5; USART_InitStructure.USART_Parity = USART_Parity_Even; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init(SC_USART, &USART_InitStructure); /* Enable the SC_USART Parity Error Interrupt */ USART_ITConfig(SC_USART, USART_IT_PE, ENABLE); /* Enable SC_USART */ USART_Cmd(SC_USART, ENABLE); /* Enable the NACK Transmission */ USART_SmartCardNACKCmd(SC_USART, ENABLE); /* Enable the Smartcard Interface */ USART_SmartCardCmd(SC_USART, ENABLE); /* Loop while no Smartcard is detected */ while(CardInserted == 0) { } /* Read Smartcard ATR response */ for(index = 0; index < 40; index++, Counter = 0) { while((USART_GetFlagStatus(SC_USART, USART_FLAG_RXNE) == RESET) && (Counter != SC_Receive_Timeout)) { Counter++; } if(Counter != SC_Receive_Timeout) { DST_Buffer[index] = USART_ReceiveData(SC_USART); } } /* Decode ATR */ CardProtocol = SC_decode_Answer2reset(DST_Buffer); /* Test if the inserted card is ISO7816-3 T=0 compatible */ if(CardProtocol == 0) { /* Inserted card is ISO7816-3 T=0 compatible */ ATRDecodeStatus = PASSED; } else { /* Inserted Smartcard is not ISO7816-3 T=0 compatible */ ATRDecodeStatus = FAILED; } while (1) { } }
/** * @brief Main program * @param None * @retval None */ int main(void) { /* System Clocks Configuration */ RCC_Configuration(); /* Configure the GPIO ports */ GPIO_Configuration(); #ifndef USE_STM3210C_EVAL /* Initialize JoyStick Button mounted on STM3210X-EVAL board */ STM_EVAL_PBInit(Button_UP, Mode_GPIO); STM_EVAL_PBInit(Button_DOWN, Mode_GPIO); STM_EVAL_PBInit(Button_LEFT, Mode_GPIO); STM_EVAL_PBInit(Button_RIGHT, Mode_GPIO); STM_EVAL_PBInit(Button_SEL, Mode_GPIO); #else /* Configure the IO Expander */ if (IOE_Config()) { /* IO Expander config error */ while(1); } #endif /* USARTy configuration ------------------------------------------------------*/ /* USARTy configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 115200; 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_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Configure the USARTy */ USART_Init(USARTy, &USART_InitStructure); /* Enable the USARTy */ USART_Cmd(USARTy, ENABLE); /* Set the USARTy prescaler */ USART_SetPrescaler(USARTy, 0x1); /* Configure the USARTy IrDA mode */ USART_IrDAConfig(USARTy, USART_IrDAMode_Normal); /* Enable the USARTy IrDA mode */ USART_IrDACmd(USARTy, ENABLE); while (1) { /* Read Key */ MyKey = ReadKey(); switch(MyKey) { case JOY_UP: USART_SendData(USARTy, JOY_UP); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_DOWN: USART_SendData(USARTy, JOY_DOWN); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_LEFT: USART_SendData(USARTy, JOY_LEFT); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_RIGHT: USART_SendData(USARTy, JOY_RIGHT); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_CENTER: USART_SendData(USARTy, JOY_CENTER); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_NONE: USART_SendData(USARTy, JOY_NONE); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; default: break; } } }
/******************************************************************************* * Function Name : main * Description : Main program * Input : None * Output : None * Return : None *******************************************************************************/ int main(void) { #ifdef DEBUG debug(); #endif /* System Clocks Configuration */ RCC_Configuration(); /* NVIC configuration */ NVIC_Configuration(); /* Configure the GPIO ports */ GPIO_Configuration(); /* USART3 configuration ------------------------------------------------------*/ /* USART3 configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 115200; 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_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Configure the USART3 */ USART_Init(USART3, &USART_InitStructure); /* Enable the USART3 */ USART_Cmd(USART3, ENABLE); /* Set the USART3 prescaler */ USART_SetPrescaler(USART3, 0x1); /* Configure the USART3 IrDA mode */ USART_IrDAConfig(USART3, USART_IrDAMode_Normal); /* Enable the USART3 IrDA mode */ USART_IrDACmd(USART3, ENABLE); while (1) { /* Wait until a byte is received */ while(USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET) { } /* Read the received byte */ ReceivedData = USART_ReceiveData(USART3); switch(ReceivedData) { case UP: GPIO_Write(GPIO_LED, GPIO_Pin_6); break; case DOWN: GPIO_Write(GPIO_LED, GPIO_Pin_7); break; case LEFT: GPIO_Write(GPIO_LED, GPIO_Pin_8); break; case RIGHT: GPIO_Write(GPIO_LED, GPIO_Pin_9); break; case SEL: GPIO_Write(GPIO_LED, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9); break; case NOKEY: break; default: break; } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f10x_xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file */ /* System Clocks Configuration */ RCC_Configuration(); /* Configure the GPIO ports */ GPIO_Configuration(); #ifndef USE_STM3210C_EVAL /* Initialize JoyStick Button mounted on STM3210X-EVAL board */ STM_EVAL_PBInit(BUTTON_UP, BUTTON_MODE_GPIO); STM_EVAL_PBInit(BUTTON_DOWN, BUTTON_MODE_GPIO); STM_EVAL_PBInit(BUTTON_LEFT, BUTTON_MODE_GPIO); STM_EVAL_PBInit(BUTTON_RIGHT, BUTTON_MODE_GPIO); STM_EVAL_PBInit(BUTTON_SEL, BUTTON_MODE_GPIO); #else /* Configure the IO Expander */ if (IOE_Config()) { /* IO Expander config error */ while(1); } #endif /* USARTy configuration ------------------------------------------------------*/ /* USARTy configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 115200; 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_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Configure the USARTy */ USART_Init(USARTy, &USART_InitStructure); /* Enable the USARTy */ USART_Cmd(USARTy, ENABLE); /* Set the USARTy prescaler */ USART_SetPrescaler(USARTy, 0x1); /* Configure the USARTy IrDA mode */ USART_IrDAConfig(USARTy, USART_IrDAMode_Normal); /* Enable the USARTy IrDA mode */ USART_IrDACmd(USARTy, ENABLE); while (1) { /* Read Key */ MyKey = ReadKey(); switch(MyKey) { case JOY_UP: USART_SendData(USARTy, JOY_UP); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_DOWN: USART_SendData(USARTy, JOY_DOWN); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_LEFT: USART_SendData(USARTy, JOY_LEFT); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_RIGHT: USART_SendData(USARTy, JOY_RIGHT); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_SEL: USART_SendData(USARTy, JOY_SEL); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; case JOY_NONE: USART_SendData(USARTy, JOY_NONE); while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET) { } break; default: break; } } }