2016年10月28日 | Leave a comment 问题: 学习USART 数据收发 解决: /** 演示了USART1 发数据给 USART2 STM32F103C8 PA9接PA3 */ #include "stm32f10x_conf.h" void RCC_conf(){ RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2 ,ENABLE); RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1| RCC_APB2Periph_AFIO,ENABLE); } void GPIO_conf(){ GPIO_InitTypeDef g; g.GPIO_Mode=GPIO_Mode_AF_PP; g.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11|GPIO_Pin_12; g.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&g); g.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_10; g.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&g); } void UART_conf(){ USART_InitTypeDef u; u.USART_BaudRate=9600; u.USART_HardwareFlowControl=USART_HardwareFlowControl_None; u.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; u.USART_Parity=USART_Parity_No; u.USART_StopBits=USART_StopBits_1; USART_Init(USART1,&u); USART_Cmd(USART1,ENABLE); USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); USART_ITConfig(USART1,USART_IT_TXE,ENABLE); USART_Init(USART2,&u); USART_Cmd(USART2,ENABLE); USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); USART_ITConfig(USART2,USART_IT_TXE,ENABLE); } void send(u8 b){ USART_SendData(USART1,b); } void delay_ms(u16 t){ u16 n; while(t--){ n=12000; while(n--); } } int main(void){ volatile u16 c;//接受到的数据 u8 d=1;//发送的数据 RCC_conf(); GPIO_conf(); UART_conf(); delay_ms(1000); while(1){ USART_SendData(USART1,d); delay_ms(1000); c=USART_ReceiveData(USART2); delay_ms(1000); d = (d+1)%255; } } 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 /**演示了USART1 发数据给 USART2 STM32F103C8 PA9接PA3*/#include "stm32f10x_conf.h" void RCC_conf(){ RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2 ,ENABLE); RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1| RCC_APB2Periph_AFIO,ENABLE);}void GPIO_conf(){ GPIO_InitTypeDef g; g.GPIO_Mode=GPIO_Mode_AF_PP; g.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11|GPIO_Pin_12; g.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&g); g.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_10; g.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&g);}void UART_conf(){ USART_InitTypeDef u; u.USART_BaudRate=9600; u.USART_HardwareFlowControl=USART_HardwareFlowControl_None; u.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; u.USART_Parity=USART_Parity_No; u.USART_StopBits=USART_StopBits_1; USART_Init(USART1,&u); USART_Cmd(USART1,ENABLE); USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); USART_ITConfig(USART1,USART_IT_TXE,ENABLE); USART_Init(USART2,&u); USART_Cmd(USART2,ENABLE); USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); USART_ITConfig(USART2,USART_IT_TXE,ENABLE); } void send(u8 b){ USART_SendData(USART1,b);} void delay_ms(u16 t){ u16 n; while(t--){ n=12000; while(n--); }}int main(void){ volatile u16 c;//接受到的数据 u8 d=1;//发送的数据 RCC_conf(); GPIO_conf(); UART_conf(); delay_ms(1000); while(1){ USART_SendData(USART1,d); delay_ms(1000); c=USART_ReceiveData(USART2); delay_ms(1000); d = (d+1)%255; }}