标题: STM8L151G sx1276-LoRa测试程序 [打印本页]

作者: joseph9507    时间: 2018-1-24 21:42
标题: STM8L151G sx1276-LoRa测试程序
STM8L151G Lora测试程序,2个模块收发测试。字符固定长度。

单片机源程序如下:
  1. //#include  <iostm8s103f3.h>
  2. #include  <iostm8l151g4.h>
  3. #include "My_type.h"
  4. #include "main.h"
  5. #include "sx1276-LoRa.h"

  6. /**********************************************************
  7. 外部中断初始化
  8. **********************************************************/
  9. void Ex_Interrupt_Init(void)//外部 PD0 中断
  10. {
  11.     PB_ODR_ODR3 = 0;  //PB3输入
  12.     PB_CR1_C13 = 1;       //带上拉输入
  13.     PB_CR2_C23 = 0;        //外部中断关
  14.     EXTI_CR1 = 0x80;     //下降沿  中断  
  15. }

  16. /*
  17. void TIM1_init(void)
  18. {
  19.   TIM1_PSCRH = 0x1F;  // 8M系统时钟经预分频f=fck/(PSCR+1)
  20.   TIM1_PSCRL = 0x3F;  // PSCR=0x1F3F,f=8M/(0x1F3F+1)=1000Hz,每个计数周期1ms
  21.   TIM1_ARRH = 0x00;  // 自动重载寄存器ARR=0x01F4=500
  22.   //TIM1_ARRL = 0x50;  // 每记数80次产生一次中断,即80ms
  23.   TIM1_ARRL = 0x5A;  // 每记数90次产生一次中断,即80ms
  24.   TIM1_IER = 0x01;    // 允许更新中断
  25.   TIM1_CR1 = 0x01;  // 计数器使能,开始计数
  26. }
  27. */


  28. #define CRX                0X01 //0--TX   1--RX  这里选择是发射  还是  接收

  29. uint8 Sx1276VerNO ;

  30. void main( void )
  31. {
  32.         PC_DDR_DDR6=1;//OUT
  33.         PC_CR1_C16=1; //SET PD
  34.         PC_CR2_C26=0; //SET PD
  35.        
  36.                 RF_GpioInt();//IO初始化
  37.      
  38.         RF_RST=0;
  39.                 delayms(10);
  40.                 RF_RST=1;
  41.                 delayms(200);

  42.                 Sx1276VerNO = SPIRead((u8)(REG_LR_VERSION>>8)); //获取SX1276 版本号 是0X11(V1A版本 工程版) 或者是 0X12(V1B 正式版)
  43.                 asm("nop");       
  44.                
  45.                 #if CRX
  46.                 RF_RXTXSWITH0=0;
  47.                 RF_RXTXSWITH1=1;
  48.                 RFM96_LoRaEntryRx();
  49.                 #endif

  50.         
  51.         while(1)
  52.         {
  53.                
  54.                 #if CRX               
  55.            RFM96_LoRaRxPacket();
  56.                 #else
  57.                         {
  58.         LED=0;
  59.                 RF_RXTXSWITH0=1;
  60.                 RF_RXTXSWITH1=0;
  61.                 RFM96_LoRaEntryTx();
  62.                 RFM96_LoRaTxPacket();
  63.                  LED=1;
  64.                 delayms(9000);
  65.                         }
  66.                 #endif
  67.         }
  68. }

  69. /**********************************************************
  70. 外部中断PE入口                    
  71. **********************************************************/
  72. #pragma vector = EXTI0_vector     
  73. __interrupt void EXTI_PD(void)
  74. {

  75.                         //RF_IRQ_DS();
  76.                         //SpiWriteAddressData((REG_WRITE | 0x07), 0x01);
  77.                         /***************** CRC Check**************************/
  78.                     //u8tmp = SpiReadAddressData(InterruptStatus1);
  79.                     //if(u8tmp & 0x02)
  80.                           //RxPacket();                 // 正确数据
  81.                     //RX_En();
  82.                     //RF_IRQ_EN();
  83.    
  84. }

  85. /*
  86. ……………………

  87. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
STM8L-1276-V1.3 test ok.zip (1.41 MB, 下载次数: 149)



作者: qqhuacong    时间: 2018-3-28 11:59
你的DIO 口 用了几个。怎么接的?
作者: cfan111    时间: 2018-4-1 14:29
MARK备用
作者: saler8888    时间: 2018-6-21 08:50
下载学习学习!!!!
作者: ddidiy    时间: 2018-11-16 11:14
谢谢分享!!!
作者: cui0510    时间: 2019-6-1 22:03
刚好用到 学习一下 谢谢无私奉献
作者: Catandu    时间: 2021-9-25 15:33
我用stm32f103+sx1278可以实现数据收发,将相同的代码移植到stm8l151上的时候无法发送数据,是什么原因呢?
作者: dcc024    时间: 2022-2-24 09:51
Catandu 发表于 2021-9-25 15:33
我用stm32f103+sx1278可以实现数据收发,将相同的代码移植到stm8l151上的时候无法发送数据,是什么原因呢?

你能收发的,用的啥模式呀,分享下呗
作者: goodmasher    时间: 2022-5-15 01:12
很想下载附件来学习,但我的分数不够无法下载,不过还是要给你点赞。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1