main.c 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #include "main.h"
  2. #include "ReadKey.h"
  3. #include "key.h"
  4. #include "ReadKey.h"
  5. #include "crc8.h"
  6. #include "led.h"
  7. #include "eventUnit.h"
  8. #include "myADC.h"
  9. #include "myInputCapture.h"
  10. #include "myLcd.h"
  11. #include "myDisplayUnit.h"
  12. #include "myFlashData.h"
  13. #include "myTim.h"
  14. #include "myUart.h"
  15. #include "myUart3.h"
  16. #include "myRadio.h"
  17. static rfRxPacket_ts rfRecvPacket;
  18. static rfTxPacket_ts rfTxPacket;
  19. static bool rftxflag = false;
  20. /**
  21. *
  22. * 串口回调函数,当串口有硬件超时时会调用该函数
  23. */
  24. static void rcc_init(void)
  25. {
  26. //---------普通IO口时钟使能
  27. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );
  28. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
  29. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );
  30. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE );
  31. //----------SPI1时钟使能
  32. RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE );
  33. //----------复用功能时钟使能
  34. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  35. #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
  36. /* ADCCLK = PCLK2/2 */
  37. RCC_ADCCLKConfig(RCC_PCLK2_Div2);
  38. #else
  39. /* ADCCLK = PCLK2/4 */
  40. RCC_ADCCLKConfig(RCC_PCLK2_Div4);
  41. #endif
  42. }
  43. /**
  44. *
  45. * 定时器中断回调,当产生定时器中断会调用该函数
  46. */
  47. void TIM3_CALLBACK(void)
  48. {
  49. static uint8_t timeCnt_1ms = 0;
  50. if(++timeCnt_1ms == 5)
  51. {
  52. timeCnt_1ms = 0;
  53. }
  54. }
  55. void rfRx_callback(uint8_t status, rfRxPacket_ts packet)
  56. {
  57. switch (status)
  58. {
  59. case RX_STA_SECCESS:
  60. {
  61. rfRecvPacket = packet;
  62. myRadio_receiver();
  63. }
  64. break;
  65. case RX_STA_TIMEOUT:
  66. {
  67. myRadio_receiver();
  68. }
  69. break;
  70. case RX_STA_PAYLOAD_ERROR:
  71. {
  72. myRadio_receiver();
  73. }
  74. break;
  75. case TX_STA_SECCESS:
  76. {
  77. myRadio_receiver();
  78. rftxflag = false;
  79. }
  80. break;
  81. default:
  82. break;
  83. }
  84. }
  85. int main(void)
  86. {
  87. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  88. rcc_init();
  89. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag , 开启swd
  90. //初始化定时器
  91. myTim1_init(200, TIM3_CALLBACK);
  92. myRadio_init(0, rfRx_callback);
  93. myRadio_setFrequency(433920000); //根据实际使用的模块对应的频段设置频点
  94. myRadio_setTxPower(12); //注意大功率模块不能设置过大,具体根据对应的模块规格书设置
  95. myRadio_setBaudrate(RF_BAUDRATE_1220);
  96. myRadio_receiver();
  97. while(1)
  98. {
  99. if (rftxflag == false)
  100. {
  101. myRadio_delay(500);
  102. rftxflag = true;
  103. rfTxPacket.len = 5;
  104. strcpy(rfTxPacket.payload, "hello");
  105. myRadio_transmit(&rfTxPacket);
  106. }
  107. myRadio_process();
  108. }
  109. }