[转]
点对点通信源代码中头文件:
hal.h头文件
Description: Hardware Abstraction Layer - Utility Library for CC2430, CC2431, CC1110 and CC2510.
hal.h 头文件包含的内容:
Commonly used types -一些通用宏设置
2、Port functions/macros -I/O口
3、Interrupt functions/macros-中断
4、DMA structures / macros -DMA
5、Common USART functions/macros -通用USART
6、USART-UART specific functions/macros -UART设置
7、USART-SPI specific functions/macros -SPI设置
8、FLASH programming functions -FLASH编程
9、Timer macros/functions -定时器
10、Watch Dog Timer (WDT) -看门狗
11、ADC macros/functions-ADC
12、RF communication functions/macros RF收发器
13、Memory space mapping macros/functions -存储空间寻址
14、AES encryption / decryption functions -AES加密与解密
15、Random Generator macros / functions -随机序列发生器
16、Utility functions
HAL硬件抽象层各模块配置参见_(以后的笔记)
cul.h头文件
Description:Chipcon Utility Library,Provides utility functions for DMA administration, timer
administration, SPP handling。即为DMA,定时器,SPP简易数据包协议的管理
操作提供相关效用函数。总体包括以下五部分:
1、DMA administration functions
2、TIMER4 administrator functions
3、Simple Packet Protocol (SPP)
4、Radio (simple usage of SPP) 5、FLASH LIFE EXTENDER (FLEX)
1、DMA administration functions
(1)void culDmaInit(void);
//DMA初始化函数;初始化DMA channel_1-4,而对channel_0无效。
(2)__interrupt void dma_IRQ (void);//DAM中断函数
(3)DMA_DESC* culDmaAllocChannel(UINT8* pDmaChannelNumber, FUNCTION* callBackFunction);//这个函数管理 DMA 通道1-4的分配。这个函数和 culDmaFreeChannel(...)一起记住可用的 DMA通道。
(4)void culDmaFreeChannel(BYTE dmaChannelNumber);//这个函数释放由culDmaAlloc(...)分配的通道。当通道长时间没用时,就要被释放以供其它使用。
(5)BYTE culDmaSetUpChannel(DMA_DESC* pDmaDescriptor, BOOL immediately, FUNCTION* callBackFunction);//这个函数初始化DMA传递,当然,首先要通过调用culDmaAlloc(...)请求一条未被占用的DMA通道。
(6)void culSetDmaChannel0CallBack(FUNCTION* pCallBackFunction);//这个函数为channel_0(当DMA通道0传递完成时)设置回调函数。
(7)void culClearDmaChannel0CallBack(void);//这个函数清除channel_0的回调函数(当DMA通道0传递完成时)。
(8)void culDMAToFlash(DMA_DESC* pDmaChannel, BYTE __xdata* , WORD length, BOOL generateInterrupt);
//通过DMA将数据从源地址传递到FLASH中,这个函数进行相关DMA配置。
(9)void culDmaToAes(DMA_DESC* pDmaChannel, BYTE * pSrcAddr, WORD length, BOOL generateInterrupt);
//通过DMA将数据从源地址传递到AES中,这个函数进行相关DMA配置。
(10)BOOL culDmaFromAes(DMA_DESC* pDmaChannel, BYTE __xdata* pDstAddr, WORD length, BOOL generateInterrupt);//通过DMA将AES转化后的数据传递到指定目的地址,这个函数进行相关DMA配置。
(11)void culDmaFromRadio(DMA_DESC* pDmaChannel, BYTE* pDstAddr, BOOL generateInterrupt);
//通过DMA将无线收发器接收到的数据传递到指定目的地址,这个函数进行相关DMA配置。
(12)void culDmaToRadio(DMA_DESC* pDmaChannel, WORD length, BYTE * pSrcAddr, BOOL generateInterrupt);//通过DMA将数据从源地址传递到无线收发器发送缓冲区,这个函数进行相关DMA配置。
(13)void culDmaToUart0(DMA_DESC* pDmaChannel, WORD length, BYTE * pSrcAddr, BOOL generateInterrupt);//通过DMA将数据从源地址传递到Uart0,这个函数进行相关DMA配置。
2、TIMER4 administrator functions
(1)void culTimer4AdmInit(void);//这个函数对TIMER4进行初始化设置。
(2)__interrupt void T4_Adm_IRQ (void);//定时器4中断函数
(3)BYTE culTimer4AdmSet(DWORD timeout, FUNCTION* callBackFunction);
//这个函数负责在设定的时间间隔点调用回调函数。并且此函数的返回值是entry_number in the table.
(4)void culTimer4AdmClear(BYTE entry);//清除由culTimer4AdmSet(...)函数返回的entry_number。
(5)void culTimer4AdmReset(BYTE entry);//复位正在活动的进口计数器.entry值与culTimer4AdmSet(...)函数返回的entry_number一样。
三、Simple Packet Protocol (SPP)
(1)BOOL sppInit(UINT32 frequency, BYTE address);//此函数初始化SPP,两条DMA通道被调用,分别与RX FIFO和TX FIFO通信,
互不干扰。定时器4当在特定时间内接数据收方没有应答,就产生中断。
无线收发装置配置成在给定频率下发送数据,发送时自动插入循环冗余校验值,
接收时则自动检验该值。
(2)__interrupt void spp_rf_IRQ(void);//RF在SPP运行模式下的中断函数。
(3)__interrupt void rf_error_IRQ(void);//RF出错中断函数(TX未运行或RX溢出)。
(4)void sppSetAddress(BYTE address);//这个函数改变本地节点地址(???还不清楚,尚未确定)
(5)BYTE sppSend(SPP_TX_STRUCT* pPacketPointer);//该函数发送length字节的数据(最多122)到目的地。字节数,标志,
目的地址,源地址在Tx DMA 通道传送有效载荷到Tx FIFO前插入,如果期
望得到应答,设置相应的标志
(6)void sppReceive(SPP_RX_STRUCT *pReceiveData);//这个函数使能接收128字节,包括头和尾。接收数据通过DMA传输到
pReceiveData。DMA装备同时接收开启。接收数据将触发DMA,当所有的数
据包接收并且移走,DMA产生一个中断同时运行以前定义的函数rxCallBack
(7)void sppSetRxCallBackFunction(FUNCTION callBackFunction);
//当数据包被正确接收到,可以通过这个函数运行用户设定的回调函数。
4、Radio (simple usage of SPP)
(1)void radioInit(UINT32 frequency, BYTE localAddress);//这个函数初始化radio(运行SPP模式时):设置频率及节点地址。
(2)BOOL radioSend(BYTE* transmitData, WORD dataLength, BYTE remoteAddress, BYTE doAck);//radio发送数据
(3)BOOL radioReceive(BYTE** receiveData, BYTE* length, WORD timeout, BYTE* sender);//radio接收数据