找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 898|回复: 0
打印 上一主题 下一主题
收起左侧

24L01在STM8上的源码

[复制链接]
跳转到指定楼层
楼主
ID:398444 发表于 2018-9-15 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
收发一体,硬件SPI

单片机源程序如下:
  1. /******************** (C) COPYRIGHT 2014青风电子********************************
  2. * 文件名  :main.c
  3. * 描述    :I2C 读写(AT24C02)测试。
  4. *         
  5. * 实验平台:QF-STM8开发板
  6. * 库版本  :ST3.0.0
  7. *
  8. * 作者    :青风
  9. *
  10. **********************************************************************************/       
  11. /***头文件调用****/

  12. #include <stdio.h>
  13. #include "stm8s.h"
  14. #include "stm8s_clk.h"
  15. #include "string.h"
  16. #include "stm8s_spi.h"
  17. #include "stm8s_gpio.h"
  18. #include "stm8s_clk.h"
  19. #include "rf24l01.h"
  20. #include "uart.h"
  21. #include "led.h"


  22. extern volatile unsigned char touch_flag;
  23. uchar rece_buf[32];

  24. //接收串口数据
  25. int recive(void)
  26. {
  27.   uint i=0;uchar j=0;
  28. if(((UART1->SR)&(1<<5)))//串口状态寄存器读数据寄存器非空判断是否接收数据
  29. {
  30. rece_buf[++j]=UART1->DR;//把接收的数据放入DR寄存器中
  31. UART1->SR=(0<<5);
  32. while(i<500) //设置接收长度
  33.                 {
  34.                        if(((UART1->SR)&(1<<5)))//再判断一次
  35.                         {
  36.                                    rece_buf[++j]=UART1->DR;
  37.                                  i=0;
  38.                         }
  39.                         i++;//循环接收
  40.                 }       
  41.   rece_buf[0] =j;                               
  42.         return 0;       
  43. }       
  44. else
  45.         {
  46.                 return 1;                 
  47.         }
  48. }

  49. int main(void)
  50. {
  51.   
  52.        uchar i=0;uint t=0;
  53.        SPI_RF_Init();//初始化无线nrf24l01底层驱动
  54.        USART_Configuration();//初始化串口底层驱动
  55.        while(NRF24L01_Check()); //自发送自接收检查是否无线设备完好
  56.         NRF24L01_RT_Mode();//设置模式
  57.        
  58.         while(1)//循环判断
  59.         {
  60.                 if(SPI_RF_IRQ()==0)        //通过nrf的中断管脚判断是否是接收无线数据
  61.                 {
  62.                         if(NRF24L01_RxPacket(rece_buf)==0)
  63.                         {
  64.                                      if((rece_buf[0])<32)
  65.                                 {
  66.                                         for(i=0;i<rece_buf[0];i++)
  67.                                         UART_send_byte(rece_buf[i+1]);
  68.                                 }
  69.                         }
  70.                 }
  71.                 if(recive()==0)         //发送无线数据

  72.                 {
  73.                         SPI_RF_CE_LOW();
  74.                         NRF24L01_Write_Reg(WRITE_REG+CONFIG,0x0e);
  75.                         SPI_RF_CE_HIGH();
  76.                         NRF24L01_TxPacket(rece_buf);
  77.                         SPI_RF_CE_LOW();
  78. ……………………

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

所有资料51hei提供下载:
实验四十一:无线串口透传.zip (1.15 MB, 下载次数: 10)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表