main.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "main.h"
  2. /**
  3. ******************************************************************************
  4. * @author 泽耀科技 ASHINING
  5. * @version V3.0
  6. * @date 2021-11-24
  7. * @brief 主函数C文件
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * 官网 : http://www.ashining.com
  12. * 淘宝 : https://shop105912646.taobao.com
  13. * 阿里巴巴: https://cdzeyao.1688.com
  14. ******************************************************************************
  15. //==========引脚接线图
  16. 1、STM32串口配置:串口1(PA9-TXD PA10-RXD) 波特率-9600 8位数据位 1位停止位
  17. STM32与SX1268是软件SPI通信
  18. 2、LED LED0 PC3 --发送指示灯
  19. LED1 PC2 --接收指示灯
  20. 3、射频模块与单片机接线---最少接线图
  21. SX1268 STM32
  22. SCK PA5 --SPI时钟输出
  23. MISO PA6 --SPI数据输入
  24. MOSI PA7 --SPI数据输出
  25. NSS PA4 --SPI片选
  26. NRST PA3 --复位
  27. BUSY PA2 --忙
  28. TXEN PA1 --发送使能
  29. RXEN PA0 --接收使能
  30. DIO1 PC0 --(按需求使用)
  31. 4、程序功能--射频收发一体
  32. 射频发送:SX1268发送单片机串口接收到的数据
  33. 射频接收:SX1268接收到数据以后,通过单片机串口打印出来
  34. */
  35. uint8_t g_RxBuffer[ 256 ] = { 0 };
  36. uint8_t g_RxLen = 0;
  37. int main()
  38. {
  39. uint8_t irqRegs=0;
  40. delay_init(); //延时函数初始化
  41. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //NVIC分组2:2位抢占优先级,2位响应优先
  42. USART1_Init(9600); //UASRT1初始化
  43. LEDGPIO_Init();
  44. TIMx_Init(TIM2,10); //定时器2初始化
  45. RadioInit(); //SX1268初始化
  46. RadioStandby();
  47. {
  48. RadioSetTxConfig(MODEM_LORA, 22, 0,
  49. 2,11,
  50. 1, 12,
  51. FALSE, TRUE ,
  52. FALSE,0, 0, 3000);
  53. RadioSetChannel(433000000);
  54. }
  55. USART_SendString( USART1 , "STM32F103+SX1268 收发测试\r\n");
  56. LED_Toogle(3);
  57. RadioRx(0);
  58. while(1)
  59. {
  60. //SX1268发送
  61. if( Uart_dat.Receive_OK )
  62. {
  63. RadioSend( Uart_dat.Recv_Buff , Uart_dat.Receive_Num , 0 );
  64. Clear_Uart_Dat( &Uart_dat );
  65. USART_SendString( USART1 , "发送完成\r\n");
  66. LED0_TOOGLE; //发送指示
  67. }
  68. //SX1268接收
  69. irqRegs = RadioGetIrqStatus();
  70. if( ( irqRegs & IRQ_RX_DONE ) == IRQ_RX_DONE )
  71. {
  72. RadioClearIrqStatus(IRQ_RADIO_ALL);
  73. RadioRx(0); //变为接收状态
  74. RadioGetBuffer( g_RxBuffer, &g_RxLen, 255 );
  75. if( g_RxLen )
  76. {
  77. USART_SendBuffDat( USART1 , g_RxBuffer , g_RxLen );
  78. LED1_TOOGLE; //接收指示灯
  79. }
  80. }
  81. }
  82. }