Слияние кода завершено, страница обновится автоматически
#ifndef _ECBM_FUR_H_//头文件防止重加载必备,先看看有没有定义过这个,定义说明已经加载过一次了。
#define _ECBM_FUR_H_//没定义说明是首次加载,那么往下执行。并且定义这个宏定义,防止下一次被加载。
/*-------------------------------------------------------------------------------------
The MIT License (MIT)
Copyright (c) 2021 奈特
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
免责说明:
本软件库以MIT开源协议免费向大众提供。作者只保证原始版本是由作者在维护修BUG,
其他通过网络传播的版本也许被二次修改过,由此出现的BUG与作者无关。而当您使用原始
版本出现BUG时,请联系作者解决。
**************************
* 联系方式:进群778916610 *
**************************
------------------------------------------------------------------------------------*/
//-----------------以下是图形设置界面,可在Configuration Wizard界面设置-----------------
//<<< Use Configuration Wizard in Context Menu >>>
//<o>指令缓存
//<i>单位:条。每条指令占6个字节。
//<i>最少要有一条指令缓存,最多能有200条指令缓存。
//<1-200>
#define FUR_BUF_MAX 5
//<q>串口回复/主机使能
//<i>在作为从机时,FUR虽然是基于串口的应用,但是数据的反馈往往可以用其他形式。
//<i>比如用板载OLED来显示数据、 直接观察舵机的旋转角度等。此时把回复功能取消掉可以节省一些空间。
//<i>但要是作为主机的话,串口发送是必须要有的部分。必须要使能。
#define FUR_UART_SEND_EN 1
//<<< end of configuration section >>>
//-----------------以下是图形设置界面,可在Configuration Wizard界面设置-----------------
/*---------------------------------------头文件------------------------------------*/
#include "ecbm_core.h" //ECBM库的头文件,里面已经包含了STC8的头文件。
/*---------------------------------------宏定义------------------------------------*/
/*------------------变量定义------------------*/
#define fur8 unsigned char //无符号8位变量。
#define fur16 unsigned int //无符号16位变量。
#define fur32 unsigned long //无符号32位变量。
/*------------------操作定义------------------*/
#define FUR_READ 0x00//读寄存器。
#define FUR_ADD 0x10//寄存器加上一个数。
#define FUR_DEC 0x20//寄存器减去一个数。
#define FUR_MUL 0x30//寄存器乘以一个数。
#define FUR_DIV 0x40//寄存器除以一个数。
#define FUR_AND 0x50//寄存器与上一个数。
#define FUR_OR 0x60//寄存器或上一个数。
#define FUR_XOR 0x70//寄存器异或上一个数。
#define FUR_BIT 0x80//寄存器位赋值。
#define FUR_EQU 0x90//寄存器赋值。
/*------------------标志位定义----------------*/
/*以下标志位用于FUR组件内部判断和评估,用户不需要查询这些位。*/
#define FUR_WRITE 0x01//写入使能,标记这个数据需要写进寄存器。
#define FUR_HEX 0x02//16进制使能,标记这个数据需要以16进制表示。
#define FUR_FBID 0x04//返回ID使能,标记这条指令是查询ID用的。
/*用户可以读的标志位*/
#define FUR_EN 0x80//有效数据使能,标记这个数据是本机应该处理的数据。
#define FUR_END 0x40//处理结束标志位,标记这个数据已经处理完毕。
/*------------------结构体定义----------------*/
typedef struct{
fur8 status;
fur8 operate;
fur16 addr;
fur16 dat;
}fur_buf_def;
/*------------------变量定义----------------*/
extern fur_buf_def fur_cmd_buf[FUR_BUF_MAX];//指令缓存。
extern fur8 fur_status;//接收状态机。
extern fur8 fur_start;//缓存的首指针。
extern fur8 fur_end;//缓存的尾指针。
extern fur8 fur_count;//用于统计接收了多少条指令。
extern fur8 fur_temp8;//用于接收8位数据的临时变量。
extern fur8 fur_id;//用于接收ID的临时变量。
extern fur16 fur_temp16;//用于接收16位数据的临时变量。
/*------------------状态定义----------------*/
#define FUR_READY 0//就绪态,啥也不做。
#define FUR_GET_ADDR 1//接收地址状态。
#define FUR_GET_ID 2//接收ID状态。
#define FUR_GET_OP 3//接收操作码状态。
#define FUR_GET_OP_EX 4//接收操作数状态。
#define FUR_GET_DATA 5//接收数据状态。
#define FUR_GET_DATA16 6//接收16进制数据状态。
#define FUR_CMD_ID 7//确认ID的部分。
/*--------------------------------------程序定义-----------------------------------*/
/*-------------------------------------------------------
函数名:fur_data_in
描 述:FUR数据输入函数,将FUR组件得到的数据放入到寄存器中。
输 入:
addr 要输入的地址。
dat 要输入的数据。
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_data_in(fur16 addr,fur16 dat);
/*-------------------------------------------------------
函数名:fur_data_out
描 述:FUR数据输出函数,将寄存器的数据输出到FUR组件。
输 入:
addr 要输出的地址。
输 出:无
返回值:
要输入的数据。
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern fur16 fur_data_out(fur16 addr);
/*-------------------------------------------------------
函数名:fur_get_uart
描 述:FUR获取串口数据函数。
输 入:无
输 出:无
返回值:
串口接收到的数据。
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern fur8 fur_get_uart(void);
/*-------------------------------------------------------
函数名:fur_set_uart
描 述:FUR设置(发送)串口数据函数,串口的数据寄存器一赋值就会发送,所以这个也算是发送函数。
输 入:
dat 要发送的数据。
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_set_uart(fur8 dat);
/*-------------------------------------------------------
函数名:fur_get_id
描 述:FUR获取本机ID函数。
输 入:无
输 出:无
返回值:
本机的ID号。
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern fur8 fur_get_id(void);
/*-------------------------------------------------------
函数名:fur_overflow_callback
描 述:FUR接收指令溢出回调函数,当接收到的指令超过指令缓存溢出时调用。
输 入:无
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_overflow_callback(void);
/*-------------------------------------------------------
函数名:fur_send_num_10
描 述:FUR发送数值函数,以10进制的格式发送。
输 入:
num 要发送的数值,0~65535。
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_send_num_10(u16 num);
/*-------------------------------------------------------
函数名:fur_send_num_16
描 述:FUR发送数值函数,以16进制的格式发送。
输 入:
num 要发送的数值,0x0000~0xffff。
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_send_num_16(u16 num);
/*-------------------------------------------------------
函数名:fur_reg_operate
描 述:FUR寄存器操作函数。
输 入:
buf_point 要操作的指令在缓存中的位置。
输 出:无
返回值:
操作之后,该寄存器的值。
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern fur16 fur_reg_operate(u8 buf_point);
/*-------------------------------------------------------
函数名:fur_init
描 述:FUR初始化函数。
输 入:无
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_init(void);
/*-------------------------------------------------------
函数名:fur_deal
描 述:FUR处理函数,需要放到循环中运行。
输 入:无
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_deal(void);
/*-------------------------------------------------------
函数名:fur_check
描 述:FUR检查函数,用于检查当前帧是否符合协议规定。
输 入:无
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_check(void);
/*-------------------------------------------------------
函数名:fur_reset
描 述:FUR重置函数,用于重置FUR接收状态。
输 入:无
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_reset(void);
/*-------------------------------------------------------
函数名:fur_receive
描 述:FUR接收函数,需要放在串口接收中断里执行。
输 入:无
输 出:无
返回值:无
创建者:奈特
调用例程:无
创建日期:2021-10-2
修改记录:
-------------------------------------------------------*/
extern void fur_receive(void);
#endif //和最上面的#ifndef配合成一个程序段。
//以一个空行为结尾。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )