int main(void) { // Set the internal high-speed oscillator to 1 to run at 16/1=16MHz. CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); // Reset ("de-initialise") GPIO port D. GPIO_DeInit(GPIOD); // Initialise pin 0 of port D by setting it as: // - an output pin, // - using a push-pull driver, // - at a low logic level (0V), and // - 10MHz. GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST); UART2_DeInit(); /* UART2 configuration ------------------------------------------------------*/ /* UART2 configured as follow: - BaudRate = 9600 baud - Word Length = 8 Bits - One Stop Bit - Even parity - Receive and transmit enabled - UART2 Clock disabled */ /* Configure the UART2 */ UART2_Init((u32)9600, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE); LCDInit(); DrawScreen(); UpdateLCD(); UART2_ITConfig(UART2_IT_RXNE, ENABLE); enableInterrupts(); // Infinite loop. for(;;) { DrawDemo(); Delay(80); } }
void uartInit(void) { UART2_DeInit(); /* 将寄存器的值复位 */ /* * 将UART2配置为: * 波特率 = 115200 * 数据位 = 8 * 1位停止位 * 无校验位 * 使能接收和发送 */ UART2_Init((u32)115200, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, \ UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE); UART2_ITConfig(UART2_IT_RXNE, ENABLE); //开启接收中断 UART2_Cmd(ENABLE); }
void MOD_UART_Config(uint32_t baud) { /* UART1 and UART3 configured as follow: - BaudRate = 230400 baud - Word Length = 8 Bits - One Stop Bit - No parity - Receive and transmit enabled */ UART2_DeInit(); UART2_Init(baud, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE); UART2_ClearITPendingBit(UART2_IT_RXNE); //UART2_ITConfig(UART2_IT_RXNE_OR, ENABLE); //UART2_ITConfig(UART2_IT_TXE, ENABLE); UART2_Cmd(ENABLE); //UART2_ClearITPendingBit(UART2_IT_IDLE); //UART2_ITConfig(UART2_IT_IDLE, ENABLE); }
//Modbus Initialization void Modbus_Init(void) { //Clock divider equals 1.Clock 16MHz CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //Clear bits TIM2_DeInit(); GPIO_DeInit(GPIOA); UART2_DeInit(); //Peripetial Initialization TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 78); GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST); UART2_Init(BAUDRATE, UART2_WORDLENGTH_8D, UART2_STOPBITS_2,UART2_PARITY_NO,UART2_SYNCMODE_CLOCK_DISABLE,UART2_MODE_TXRX_ENABLE ); //Enable Periphs TIM2_Cmd(ENABLE); UART2_Cmd(ENABLE); //Interrupt configuration TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); UART2_ITConfig(UART2_IT_RXNE_OR, ENABLE); #ifndef __DELAY_EN #define __MODBUS_EN enableInterrupts(); #endif }