LoRa点对点系统6 源代码结构
1 源代码结构
main.c 基于C语言系统的入口函数
main.h 系统的全局配置文件
Application 应用程序,以Contiki系统的protothread方式组织
Contiki Contiki操作系统
Driver 驱动:ST官方驱动库和MCU外设驱动文件
Project IAR环境下所有工程文档
RF SX1278射频芯片驱动代码
2 使用源代码
在源代码文件main.h中,有如下宏编译语句:
#define CUR_PRODUCT iWL882A
#define REL_VER 1 /* 0=debug; 1=release */
#define CUR_VER “LoRaP2PTW V1.0.00 2016-10-20” /*current version */
它们代表如下含义:
CUR_PRODUCT:当前LoRa终端的硬件版本号,目前出厂为iWL882A;
REL_VER:0=debug版本,串口支持shell命令;
1=release版本,串口与评估软件通信;
CUR_VER:软件版本号,其中“LoRaP2PTW”不能更改,因为评估软件依赖
该版本编号来识别产品种类;
3 Main入口函数
void main(void)
{
/* Initialize hardware */
chip_Init(); 1
SX1278InitPins(); 2
rtimer_init(); 3
ss_Init(); 4
cpc_Init(); 5
#if (!REL_VER)
dp_Init(); 6
#endif
/* EXPLAIN: enable INT before initialize process! */
HAL_ENABLE_INTERRUPTS(); 7
/*Initialize contiki system */
process_init(); 8
/* Start process of user */
comm2trm_Init(); 9
network_Init(); 10
#if (!REL_VER)
monitor_Init(); 11
#endif
while (1)
{
while (0 < process_run()) 12
{
null(); 13
}
/* EXPLAIN: Set MCU to low power mode if have nothing to do. */
wfi(); 14
}
}
Line#1:初始化MCU时钟和引脚等;
Line#2:初始化连接SX1278的SPI总线和中断控制线;
Line#3:初始化rtimer(高精度实时时钟);
Line#4:初始化SystSettings(系统参数)模块;
Line#5:初始化通信串口,它连接PC;
Line#6:如果是Debug版本,初始化调试串口;
Line#7:使能MCU硬件中断;
Line#8:初始化Contiki的进程模块;
Line#9:初始化comm2trm模块,同时启动comm2trm进程;
Line#10:初始化network模块,同时启动network进程;
Line#11:如果是Debug版本,初始化monitor模块,同时启动monitor进程;
Line#12:Contiki主循环函数,根据post和poll消息,调用对应的进程;
Line#13:空语句,为代码可读性而添加;
Line#14:节能指令,如果MCU空闲则进入WFI模式,可以被任意中断唤醒。
您的留言或需求: