微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32F10x 学习笔记6(USART实现串口通讯 2)

STM32F10x 学习笔记6(USART实现串口通讯 2)

时间:11-20 来源:互联网 点击:

  1. TING;
  2. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
  3. GPIO_Init(GPIOA,&GPIO_InitStructure);
  4. USART_InitStructure.USART_BaudRate=9600;
  5. USART_InitStructure.USART_WordLength=USART_WordLength_8b;
  6. USART_InitStructure.USART_StopBits=USART_StopBits_1;
  7. USART_InitStructure.USART_Parity=USART_Parity_No;
  8. USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  9. USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
  10. USART_Init(USART1,&USART_InitStructure);
  11. USART_Cmd(USART1,ENABLE);
  12. NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
  13. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
  14. NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
  15. NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  16. NVIC_Init(&NVIC_InitStructure);
  17. }
  18. voidUSART2_Init(void)
  19. {
  20. GPIO_InitTypeDefGPIO_InitStructure;
  21. USART_InitTypeDefUSART_InitStructure;
  22. NVIC_InitTypeDefNVIC_InitStructure;
  23. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO,ENABLE);
  24. /*ConfigureUSARTTxasalternatefunctionpush-pull*/
  25. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
  26. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
  27. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  28. GPIO_Init(GPIOD,&GPIO_InitStructure);
  29. /*ConfigureUSARTRxasinputfloating*/
  30. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  31. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
  32. GPIO_Init(GPIOD,&GPIO_InitStructure);
  33. GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);
  34. RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
  35. USART_InitStructure.USART_BaudRate=9600;
  36. USART_InitStructure.USART_WordLength=USART_WordLength_8b;
  37. USART_InitStructure.USART_StopBits=USART_StopBits_1;
  38. USART_InitStructure.USART_Parity=USART_Parity_No;
  39. USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  40. USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
  41. USART_Init(USART2,&USART_InitStructure);
  42. USART_Cmd(USART2,ENABLE);
  43. NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;
  44. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
  45. NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
  46. NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  47. NVIC_Init(&NVIC_InitStructure);
  48. }
  49. intmain(void)
  50. {
  51. unsignedcharc;
  52. unsignedcharerr;
  53. USART1_Init();
  54. USART2_Init();
  55. COMBufferInit();
  56. USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
  57. USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
  58. UART_PutStrB(COM1,"HelloWorld!\n");
  59. for(;;)
  60. {
  61. c=COMGetCharB(COM1,&err);
  62. if(err==COM_NO_ERR)
  63. {
  64. COMPutCharB(COM1,c);
  65. }
  66. }
  67. }


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top