STM32单片机串口驱动C语言例程

2018-12-04 17:01

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, 因此要对这个端口的时钟

86. 进行使能,同时由于用到复用IO口功能用于配置串口。因此还要使能AFIO(复

用功能IO)时钟。*/

87. GPIO_Configuration(); //端口初始化 88.

89. USART_Config(USART1); //串口1初始化 90.

91. USART_OUT(USART1,\测试串口 *******\\r\\n\向串口1发送开机字

符。 92.

93. USART_OUT(USART1,\94. USART_OUT(USART1,\95. USART_OUT(USART1,\96. while (1) 97. {

98. if(rec_f==1){ //判断是否收到一帧有效数据 99. rec_f=0;

100. USART_OUT(USART1,\您发送的信息为: \\r\\n\101. USART_OUT(USART1,&TxBuffer1[0]);

102. if(a==0) {GPIO_SetBits(GPIOB, GPIO_Pin_5); a=1;} //LED1 V6

(V3板) V2(MINI板) 明暗闪烁

103. else {GPIO_ResetBits(GPIOB, GPIO_Pin_5);a=0; } 104. } 105. } 106. } 107.

108. /**************************************************************************** 109. * 名 称:void Delay(__IO uint32_t nCount) 110. * 功 能:延时函数 111. * 入口参数:无 112. * 出口参数:无 113. * 说 明: 114. * 调用方法:无

115. ****************************************************************************/ 116. void Delay(__IO uint32_t nCount) 117. {

118. for(; nCount != 0; nCount--); 119. } 120.

121. /**************************************************************************** 122. * 名 称:void USART_OUT(USART_TypeDef* USARTx, uint8_t *Data,...) 123. * 功 能:格式化串口输出函数 124. * 入口参数:USARTx: 指定串口 125. Data: 发送数组 126. ...: 不定参数 127. * 出口参数:无

128. * 说 明:格式化串口输出函数

129. \回车符 USART_OUT(USART1, \130. \换行符 USART_OUT(USART1, \

131. \字符串 USART_OUT(USART1, \字符串是:%s\132. \十进制 USART_OUT(USART1, \133. * 调用方法:无

134. ****************************************************************************/ 135. void USART_OUT(USART_TypeDef* USARTx, uint8_t *Data,...){ 136. const char *s; 137. int d; 138. char buf[16]; 139. va_list ap; 140. va_start(ap, Data); 141.

142. while(*Data!=0){ //判断是否到达字符串结束

143. if(*Data==0x5c){ //'\\' 144. switch (*++Data){

145. case 'r': //回车符 146. USART_SendData(USARTx, 0x0d); 147.

148. Data++; 149. break;

150. case 'n': //换行符 151. USART_SendData(USARTx, 0x0a);


STM32单片机串口驱动C语言例程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教师队伍建设实施方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: