static void AppTaskRadioControlInit(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_USART6); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_USART6); USART_InitStructure.USART_BaudRate = 125000; USART_InitStructure.USART_WordLength = USART_WordLength_9b; 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; USART_Init(USART6, &USART_InitStructure); USART_WakeUpConfig(USART6, USART_WakeUp_AddressMark); USART_SetAddress(USART6, 0x05); USART_ITConfig(USART6, USART_IT_RXNE, ENABLE); USART_ITConfig(USART6, USART_IT_TC, ENABLE); USART_ClearFlag(USART6,USART_FLAG_RXNE); USART_ClearFlag(USART6,USART_FLAG_TC); BSP_IntVectSet(BSP_INT_ID_USART6, USART6_IRQHandler); BSP_IntPrioSet(BSP_INT_ID_USART6, 3); BSP_IntEn(BSP_INT_ID_USART6); USART_Cmd(USART6, ENABLE); }
/** * @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, Wakeup and Key Buttons mounted on STM3210X-EVAL board */ STM_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); STM_EVAL_PBInit(BUTTON_WAKEUP, BUTTON_MODE_EXTI); STM_EVAL_PBInit(BUTTON_KEY, BUTTON_MODE_EXTI); /* USARTy and USARTz configuration -------------------------------------------*/ /* USARTy and USARTz configured as follow: - BaudRate = 9600 baud - Word Length = 9 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_9b; 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 USARTy */ USART_Init(USARTy, &USART_InitStructure); /* Configure USARTz */ USART_Init(USARTz, &USART_InitStructure); /* Enable the USARTy */ USART_Cmd(USARTy, ENABLE); /* Enable the USARTz */ USART_Cmd(USARTz, ENABLE); /* Set the USARTy Address */ USART_SetAddress(USARTy, 0x1); /* Set the USARTz Address */ USART_SetAddress(USARTz, 0x2); /* Select the USARTz WakeUp Method */ USART_WakeUpConfig(USARTz, USART_WakeUp_AddressMark); while (1) { /* Send one byte from USARTy to USARTz */ USART_SendData(USARTy, 0x33); /* Wait while USART1 TXE = 0 */ while(USART_GetFlagStatus(USARTz, USART_FLAG_TXE) == RESET) { } if(USART_GetFlagStatus(USARTz, USART_FLAG_RXNE) != RESET) { if(USART_ReceiveData(USARTz) == 0x33) { STM_EVAL_LEDToggle(LED1); Delay(0x5FFFF); STM_EVAL_LEDToggle(LED2); Delay(0x5FFFF); STM_EVAL_LEDToggle(LED3); Delay(0x5FFFF); STM_EVAL_LEDToggle(LED4); Delay(0x5FFFF); } } } }
/****************************************************************************** * USART1 Initialization Code Template ******************************************************************************/ void USART1__Init() { USART_InitTypeDef USART_InitStruct; #if (STRCMP($modeSelect$, USART_MODE_SYNCHRONOUS) == 1) //PUT_A_NEW_LINE_HERE USART_ClockInitTypeDef USART_ClockInitStruct; #endif #if (!STRCMP($USARTIntSet$, 0)) NVIC_InitTypeDef NVIC_InitStructure; #endif //PUT_A_NEW_LINE_HERE // // Enable peripheral clock of USART1 and GPIOA // RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //PUT_A_NEW_LINE_HERE // // USART Config // USART_InitStruct.USART_BaudRate = $baudRate$; USART_InitStruct.USART_WordLength = $dataBits$; USART_InitStruct.USART_StopBits = $stopBits$; USART_InitStruct.USART_Parity = $parityBits$; USART_InitStruct.USART_Mode = $modeSet$; USART_InitStruct.USART_HardwareFlowControl = $HardwareFlowControl$; USART_Init(USART1, &USART_InitStruct); #if ($guardTime$ != 0) //PUT_A_NEW_LINE_HERE // // Set Guard Time // USART_SetGuardTime(USART1, $guardTime$); #endif //PUT_A_NEW_LINE_HERE USART_WakeUpConfig(USART1, $WakeUpmethod$); //PUT_A_NEW_LINE_HERE #if (STRCMP($modeSelect$, USART_MODE_NORMAL) == 1) #elif (STRCMP($modeSelect$, USART_MODE_IRDA) == 1) //PUT_A_NEW_LINE_HERE // //USART IrDA Mode Config // USART_IrDAConfig(USART1, $IrDAModeSel$); USART_IrDACmd(USART1, ENABLE); #elif (STRCMP($modeSelect$, USART_MODE_DMA) == 1) //PUT_A_NEW_LINE_HERE // //USART DMA Mode Config // USART_DMACmd(USART1, $DMAReq$, ENABLE); #elif (STRCMP($modeSelect$, USART_MODE_SYNCHRONOUS) == 1) //PUT_A_NEW_LINE_HERE // // USART Synchronous Mode Config // USART_Clock_InitStruct.USART_Clock = USART_CLOCK_ENABLE; USART_Clock_InitStruct.USART_CPOL = $synClockPolSet$; USART_Clock_InitStruct.USART_CPHA = $synClockPhaseSet$; USART_Clock_InitStruct.USART_LastBit = $lastbitenable$; USART_ClockInit(USART1, &USART_Clock_InitStruct); #elif (STRCMP($modeSelect$, USART_MODE_LIN) == 1) //PUT_A_NEW_LINE_HERE // // USART LIN Mode Config // USART_LINBreakDetectLengthConfig(USART1, $LINBreakDetectLen$); USART_LINCmd(USART1, ENABLE); #elif (STRCMP($modeSelect$, USART_MODE_SMARTCARD) == 1) //PUT_A_NEW_LINE_HERE // // USART SmartCard Mode Config // USART_SmartCardCmd(USART1, ENABLE); #elif (STRCMP($NACKTrans$, ENABLE) == 1) //PUT_A_NEW_LINE_HERE USART_SmartCardNACKCmd(USART1, ENABLE); #elif (STRCMP($modeSelect$, USART_MODE_HALFDUPLEX) == 1) //PUT_A_NEW_LINE_HERE // // USART HalfDuplex Mode Config // USART_HalfDuplexCmd(USART1, ENABLE); #endif #if (!STRCMP($USARTIntSet$, 0)) //PUT_A_NEW_LINE_HERE // // Enable the USART Interrupt Function // USART_ITConfig(USART1, $USARTIntSet$, ENABLE); NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #endif }
/** * @brief Main program * @param None * @retval None */ int main(void) { /* System Clocks Configuration */ RCC_Configuration(); /* Configure the GPIO ports */ GPIO_Configuration(); /* Initialize Leds, Wakeup and Key Buttons mounted on STM3210X-EVAL board */ STM_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); STM_EVAL_PBInit(Button_WAKEUP, Mode_EXTI); STM_EVAL_PBInit(Button_KEY, Mode_EXTI); /* USARTy and USARTz configuration -------------------------------------------*/ /* USARTy and USARTz configured as follow: - BaudRate = 9600 baud - Word Length = 9 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_9b; 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 USARTy */ USART_Init(USARTy, &USART_InitStructure); /* Configure USARTz */ USART_Init(USARTz, &USART_InitStructure); /* Enable the USARTy */ USART_Cmd(USARTy, ENABLE); /* Enable the USARTz */ USART_Cmd(USARTz, ENABLE); /* Set the USARTy Address */ USART_SetAddress(USARTy, 0x1); /* Set the USARTz Address */ USART_SetAddress(USARTz, 0x2); /* Select the USARTz WakeUp Method */ USART_WakeUpConfig(USARTz, USART_WakeUp_AddressMark); while (1) { /* Send one byte from USARTy to USARTz */ USART_SendData(USARTy, 0x33); /* Wait while USART1 TXE = 0 */ while(USART_GetFlagStatus(USARTz, USART_FLAG_TXE) == RESET) { } if(USART_GetFlagStatus(USARTz, USART_FLAG_RXNE) != RESET) { if(USART_ReceiveData(USARTz) == 0x33) { STM_EVAL_LEDToggle(LED1); Delay(0x5FFFF); STM_EVAL_LEDToggle(LED2); Delay(0x5FFFF); STM_EVAL_LEDToggle(LED3); Delay(0x5FFFF); STM_EVAL_LEDToggle(LED4); Delay(0x5FFFF); } } } }