STM32单片机串口驱动C语言例程 下载本文

STM32串口驱动例程

定义:

TXD1----- PA9-US1-TX RXD1----- PA10-US1-RX 速率:115200,n,8,1 [cpp] view plaincopyprint?

1. /* Includes ------------------------------------------------------------------*/ 2. #include \ 3. #include \ 4. #include \ 5. #include \ 6. #include \ 7. 8. 9.

10. /* Private variables ---------------------------------------------------------*/ 11. USART_InitTypeDef USART_InitStructure;

12. uint8_t TxBuffer1[] = \13. uint8_t RxBuffer1[],rec_f,tx_flag; 14. __IO uint8_t TxCounter1 = 0x00; 15. __IO uint8_t RxCounter1 = 0x00; 16.

17. uint32_t Rec_Len; 18. 19.

20. /* Private function prototypes -----------------------------------------------*/ 21. void RCC_Configuration(void); 22. void GPIO_Configuration(void); 23. void NVIC_Configuration(void); 24.

25. void Delay(__IO uint32_t nCount);

26. void USART_OUT(USART_TypeDef* USARTx, uint8_t *Data,...); 27. char *itoa(int value, char *string, int radix);

28. void USART_Config(USART_TypeDef* USARTx); 29. 30.

31. GPIO_InitTypeDef GPIO_InitStructure; 32. USART_InitTypeDef USART_InitStruct;

33. USART_ClockInitTypeDef USART_ClockInitStruct; 34.

35. /**************************************************************************** 36. * 名 称:void ili9325_DrawPicture(u16 StartX,u16 StartY, u8 Dir,u8 *pic) 37. * 功 能:在指定座标范围显示一副图片 38. * 入口参数:StartX 行起始座标 39. * StartY 列起始座标 40. * Dir 图像显示方向 41. * pic 图片头指针 42. * 出口参数:无

43. * 说 明:图片取模格式为水平扫描,16位颜色模式 取模软件img2LCD 44. * 调用方法:ili9325_DrawPicture(0,0,0,(u16*)demo);

45. ****************************************************************************/ 46. void USART_Config(USART_TypeDef* USARTx){

47. USART_InitStructure.USART_BaudRate = 115200; //速率

115200bps

48. USART_InitStructure.USART_WordLength = USART_WordLength_8b; //

数据位8位

49. USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止

位1位

50. USART_InitStructure.USART_Parity = USART_Parity_No; //无校验

51. USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlo

wControl_None; //无硬件流控

52. USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_T

x; //收发模式 53.

54. /* Configure USART1 */

55. USART_Init(USARTx, &USART_InitStructure); //配置串口参

数函数

56. 57.

58. /* Enable USART1 Receive and Transmit interrupts */

59. USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //使能

接收中断

60. USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //使能

发送缓冲空中断 61.

62. /* Enable the USART1 */

63. USART_Cmd(USART1, ENABLE); 64. }

65. /**************************************************************************** 66. * 名 称:int main(void) 67. * 功 能:主函数 68. * 入口参数:无 69. * 出口参数:无 70. * 说 明: 71. * 调用方法:无

72. ****************************************************************************/ 73. int main(void) 74. { 75.

76. uint8_t a=0;

77. /* System Clocks Configuration */

78. RCC_Configuration(); //系统时钟设置 79.

80. /*嵌套向量中断控制器

81. 说明了USART1抢占优先级级别0(最多1位) ,和子优先级级别0(最多

7位) */

82. NVIC_Configuration(); //中断源配置 83.

84. /*对控制LED指示灯的IO口进行了初始化,将端口配置为推挽上拉输出,口

线速度为50Mhz。PA9,PA10端口复用为串口1的TX,RX。

85. 在配置某个口线时,首先应对它所在的端口的时钟进行使能。否则无法配置成

功,由于用到了端口B, 因此要对这个端口的时钟