⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfg.h

📁 RS232+485+USB+nRF2401,该程序主要是nRF2401在各种通讯接口的应用
💻 H
字号:
/*

  项目: 人员定位:读卡器
  文件: cfh.h
  日期: 2007.09.12
  作者: 邵子扬
  说明: 定义项目的配置参数,分配管脚

*/

#ifndef _CFG_H_
#define _CFG_H_

//系统时钟频率
#define F_CPU     8000000UL

//LED
#define LED       PB0
#define LEDPORT   PORTB    //LED端口

//Plus:控制外部放大器输出脉冲
#define Plus      PB1

//nRF2401接口
#define DR1       PD3
#define CE        PD5
#define CS        PB2
#define MOSI      PB3
#define MISO      PB4
#define SCK       PB5
#define SPIPORT   PORTB

//使用485模式
#define RS485     1
//485控制端口和引脚
#define RS485PORT D
#define RS485TXEn PD4

//串口号: 0/1/2...
#define COMPORTNo 0

//波特率
#define BAUDRATE  9600

//计算波特率寄存器
#define BAUDREG   ((unsigned int)((F_CPU * 10) / (16UL * BAUDRATE) - 5) / 10)

//收发缓冲区最大长度
#define RTBUF_MAX_SIZE 100

//最大保存卡片数
#define MAX_CARD_NO 160

//nRF2401关键配置字
//收发:1b
#define RF_RXEN   1        //1:收  0:发
//频率:7b,最大127 FREQ=2400+RF_FREQ
#define RF_FREQ   2        //0-127
//功率:2
#define RF_PWR    3        //0:-20 1:-10 2:-5 3:0
//晶体频率:3
#define RF_CRYS   3        //0:4MHz 1:8 2:12 3:16MHz 4:20
//速率:1
#define RF_BPS    0        //0:250k 1:1M
//通信模式:1
#define RF_MODE   1        //0:直接 1:ShockBurst
//双通道:1
#define RF_RX2EN  0        //0:禁止 1:使能
//使能硬件CRC:1
#define RF_CRCEN  1        //0:禁止 1:使能
//CRC8/CRC16
#define RF_CRCL   1        //0:CRC8 1:CRC16

//通道地址长度:6,最大40
#define RF_ADDRW  32       //0-40

//通道1地址:最大5字节
#define RF_ADDR10 0x78
#define RF_ADDR11 0x56
#define RF_ADDR12 0x34
#define RF_ADDR13 0x12
#define RF_ADDR14 0x00

//通道1数据长度:8
#define RF_DATAW1 16

//通道2地址:最大5字节
#define RF_ADDR20 0xCC
#define RF_ADDR21 0xCC
#define RF_ADDR22 0xCC
#define RF_ADDR23 0x1C
#define RF_ADDR24 0x00

//通道2数据长度:8
#define RF_DATAW2 8


///////////////////////////////////////////////////////

//以下不要随便修改

///////////////////////////////////////////////////////

//检查波特率误差
//下面的定义在不同的C编译器之间可能会有差异
#define FreqTemp           (16UL * BAUDRATE * (((F_CPU * 10) / (16 * BAUDRATE) + 5)/ 10))
#if ((FreqTemp * 50) > (51 * F_CPU) || (FreqTemp * 50) < (49 * F_CPU))
#error "BaudRate error > 2% ! Please check BaudRate and F_CPU value."
#endif

#define True               1
#define False              0
#define TRUE               1
#define FALSE              0

//内部使用的宏定义
#define CONCAT(a, b)       a ## b
#define CONCAT3(a, b, c)   a ## b ## c

//端口以及位定义
#define PORTREG(No)        CONCAT(PORT, No)
#define PINREG(No)         CONCAT(PIN, No)
#define UDRREG(No)         CONCAT(UDR, No)
#define DDRREG(No)         CONCAT(DDR, No)
#define TXCBIT(No)         CONCAT(TXC, No)
#define RXCBIT(No)         CONCAT(RXC, No)
#define RXENBIT(No)        CONCAT(RXEN, No)
#define TXENBIT(No)        CONCAT(TXEN, No)
#define URSELBIT(No)       CONCAT(URSEL, No)
#define RXCIEBIT(No)       CONCAT(RXCIE, No)
#define TXCIEBIT(No)       CONCAT(TXCIE, No)

//串口初始化需要寄存器
#define UBRRHREG(No)       CONCAT3(UBRR, No, H)
#define UBRRLREG(No)       CONCAT3(UBRR, No, L)
#define UCSRAREG(No)       CONCAT3(UCSR, No, A)
#define UCSRBREG(No)       CONCAT3(UCSR, No, B)
#define UCSRCREG(No)       CONCAT3(UCSR, No, C)
#define UCSZBIT(No1, No2)  CONCAT3(UCSZ, No1, No2)

//部分AVR单片机设置串口时需要使用URSEL位
#if defined(URSEL) || defined(URSEL0)
#define USEURSEL           URSELBIT(COMPORTNo)
#else
#define USEURSEL           0
#endif

//定义串口0相关寄存器
#if !defined(UDR0)
#define UBRR0H             UBRRH
#define UBRR0L             UBRRL
#define UCSR0A             UCSRA
#define UCSR0B             UCSRB
#define UCSR0C             UCSRC
#define UDR0               UDR
#define TXC0               TXC
#define RXC0               RXC
#define RXEN0              RXEN
#define TXEN0              TXEN
#define UCSZ01             UCSZ1
#define UCSZ00             UCSZ0
#define URSEL0             URSEL
#define RXCIE0             RXCIE
#define TXCIE0             TXCIE
#endif

#if RS485
#define RS485Enable()      PORTREG(RS485PORT) |= (1 << RS485TXEn)
#define RS485Disable()     PORTREG(RS485PORT) &= ~(1 << RS485TXEn)
#endif

#define DataInUart()       (UCSRAREG(COMPORTNo) & (1 << RXCBIT(COMPORTNo)))

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -