You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.1 KiB

4 years ago
  1. #include "uart0.h"
  2. void uart0_init(void) {
  3. /**
  4. * @brief ô0IJΪ115200
  5. * ʱΪϵͳʱ Fpclk ΪϵͳʱƵ
  6. *
  7. */
  8. GPIO_InitSettingType InitSet;
  9. InitSet.Dir = GPIO_Direction_Output;
  10. InitSet.DS = GPIO_DS_Output_Strong;
  11. InitSet.Func = GPIO_Reuse_Func1;
  12. InitSet.ODE = GPIO_ODE_Output_Disable;
  13. InitSet.PDE = GPIO_PDE_Input_Disable;
  14. InitSet.PUE = GPIO_PUE_Input_Disable;
  15. InitSet.Signal = GPIO_Pin_Signal_Digital;
  16. GPIO_Init(UART0_TXD0_PIN, &InitSet);
  17. InitSet.Dir = GPIO_Direction_Input;
  18. InitSet.DS = GPIO_DS_Output_Strong;
  19. InitSet.Func = GPIO_Reuse_Func1;
  20. InitSet.ODE = GPIO_ODE_Output_Disable;
  21. InitSet.PDE = GPIO_PDE_Input_Disable;
  22. InitSet.PUE = GPIO_PUE_Input_Disable;
  23. InitSet.Signal = GPIO_Pin_Signal_Digital;
  24. GPIO_Init(UART0_RXD0_PIN, &InitSet);
  25. UART_InitStruType UART_InitStruct;
  26. UART_InitStruct.UART_BaudRate = 115200; //������
  27. UART_InitStruct.UART_ClockSet = UART_Clock_1; //ʱ��ѡ�񲻷�Ƶ
  28. UART_InitStruct.UART_RxMode = UART_DataMode_8; // 8����λ����żУ��λ
  29. //��׼���Զ˿����ݺʹ���������ͬ
  30. UART_InitStruct.UART_RxPolar = UART_Polar_Normal;
  31. UART_InitStruct.UART_StopBits = UART_StopBits_1; //һ��ֹͣλ
  32. UART_InitStruct.UART_TxMode = UART_DataMode_8; // 8����λ����żУ��λ
  33. UART_InitStruct.UART_TxPolar = UART_Polar_Normal; //��׼usart����
  34. UART_Init(UART0, &UART_InitStruct);
  35. UART_ITConfig(UART0, UART_IT_RB, Enable); /* UART0�����ж�ʹ�� */
  36. /* UART0���ͻ��������ж�ģʽ: ȫ���ж� */
  37. UART_TBIMConfig(UART0, UART_TBIM_Byte);
  38. NVIC_Init(NVIC_UART0_IRQn, NVIC_Priority_1, Enable); //ʹ�ܴ���0�ж�
  39. UART0_TxEnable();
  40. UART0_RxEnable();
  41. }
  42. void UART0_IRQHandler(void) {
  43. /**
  44. * @brief Դڵݲ
  45. *
  46. */
  47. uint8_t uart0_data;
  48. uart0_data = UART_RecByte(UART0);
  49. UART_SendByte(UART0, uart0_data);
  50. }
  51. void Uart0SendBuff(uint8_t *buff) {
  52. while (*buff != '\0') {
  53. UART_SendByte(UART0, *buff);
  54. while (UART_GetFlagStatus(UART0, UART_FLAG_TC) == RESET)
  55. ;
  56. UART_ClearITPendingBit(UART0, UART_FLAG_TC);
  57. buff++;
  58. }
  59. }