#ifndef SIF_H #define SIF_H /* Scheduler include files. */ #include "FreeRTOS.h" #include "task.h" #include "semphr.h" #include #include #include "pico/stdlib.h" #include "hardware/gpio.h" #define _SIF_DEBUG_ 1 #define LOW 0 //低电平 #define HIGH 1 //高电平 #define SYNC_TIME_NUM 992 //992Tosc中的992 #define SHORT_TIME_NUM 32 //一个逻辑周期中短的时间:32Tosc中的32 #define LONG_TIME_NUM 64 //一个逻辑周期中长的时间:64Tosc中的64 #define LOGIC_CYCLE_NUM 96 //一个逻辑周期 SHORT_TIME_NUM + LONG_TIME_NUM #define HALF_LOGIC_CYCLE 48 //一个逻辑周期的1/2,即 LOGIC_CYCLE_NUM/2 #define END_SIGNAL_FLAG_NUM 80 // 判断80左右的位置是否为低电平,如果为低电平 则 #define END_SIGNAL_TIME_NUM 100 //结束信号电平时间:5ms低电平 + Nms高电平,实际检测5ms低电平就行,一帧数据发送完成后检测5ms低电平就代表完成了,不发数据的时候上拉电阻拉高了 #define REV_BIT_NUM 8 //接收的bit位个数,看是按字节接收还是按字接收,1字节=8bit,1字=2字节=16bit #define REV_DATA_NUM 16 //接收的数据个数 #define SIF_REV_PIN 13 // 定义sif通信的引脚 #define TOSC 3 // 定义系统TOSC基数倍数,默认定义为3,程序中支持自适应了 void GPIO_SIF_Init(void); // GPIO初始化函数 void Timer_SIF_Init(void); //定时器SIF初始化函数 void TIMER_SIF_IRQHandler(void); // 定时器中断回调函数 void Receive_SIF_Data_Handle(void); //接收数据处理—带校准位,即波特率自适应 void Check_Sum_Handle(void); // 校验和处理 unsigned char *pGetSIFData(void); //获取SIF数据 #ifdef _SIF_DEBUG_ char *pGetLogStr(void); //获取日志字符串 #endif extern void SIF(void *p); #endif