mirror of
https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32.git
synced 2024-09-01 08:09:25 +08:00
format code
This commit is contained in:
parent
29ae0afb3b
commit
5279977f2e
@ -8,15 +8,15 @@ extern int Image$$RW_IRAM1$$ZI$$Limit;
|
|||||||
extern int __bss_end;
|
extern int __bss_end;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint8_t CpuUsageMajor, CpuUsageMinor; //CPUʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
uint8_t CpuUsageMajor, CpuUsageMinor; //CPU使用率
|
||||||
USHORT usModbusUserData[MB_PDU_SIZE_MAX];
|
USHORT usModbusUserData[MB_PDU_SIZE_MAX];
|
||||||
UCHAR ucModbusUserData[MB_PDU_SIZE_MAX];
|
UCHAR ucModbusUserData[MB_PDU_SIZE_MAX];
|
||||||
//====================<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>==================================
|
//====================操作系统各线程优先级==================================
|
||||||
#define thread_SysMonitor_Prio 11
|
#define thread_SysMonitor_Prio 11
|
||||||
#define thread_ModbusSlavePoll_Prio 10
|
#define thread_ModbusSlavePoll_Prio 10
|
||||||
#define thread_ModbusMasterPoll_Prio 9
|
#define thread_ModbusMasterPoll_Prio 9
|
||||||
ALIGN(RT_ALIGN_SIZE)
|
ALIGN(RT_ALIGN_SIZE)
|
||||||
//====================<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD>̶߳<EFBFBD>ջ====================================
|
//====================操作系统各线程堆栈====================================
|
||||||
static rt_uint8_t thread_SysMonitor_stack[256];
|
static rt_uint8_t thread_SysMonitor_stack[256];
|
||||||
static rt_uint8_t thread_ModbusSlavePoll_stack[512];
|
static rt_uint8_t thread_ModbusSlavePoll_stack[512];
|
||||||
static rt_uint8_t thread_ModbusMasterPoll_stack[512];
|
static rt_uint8_t thread_ModbusMasterPoll_stack[512];
|
||||||
@ -25,11 +25,11 @@ struct rt_thread thread_SysMonitor;
|
|||||||
struct rt_thread thread_ModbusSlavePoll;
|
struct rt_thread thread_ModbusSlavePoll;
|
||||||
struct rt_thread thread_ModbusMasterPoll;
|
struct rt_thread thread_ModbusMasterPoll;
|
||||||
|
|
||||||
//***************************ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>***************************
|
//***************************系统监控线程***************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void thread_entry_SysRunLed(void* parameter)
|
//函数定义: void thread_entry_SysRunLed(void* parameter)
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//入口参数:无
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//出口参数:无
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2>Editor<6F><72>Armink 2013-08-02 Company: BXXJS
|
//备 注:Editor:Armink 2013-08-02 Company: BXXJS
|
||||||
//******************************************************************
|
//******************************************************************
|
||||||
void thread_entry_SysMonitor(void* parameter)
|
void thread_entry_SysMonitor(void* parameter)
|
||||||
{
|
{
|
||||||
@ -60,18 +60,18 @@ void thread_entry_SysMonitor(void* parameter)
|
|||||||
// errorCode = eMBMasterReqWriteMultipleHoldingRegister(1,3,2,usModbusUserData,RT_WAITING_FOREVER);
|
// errorCode = eMBMasterReqWriteMultipleHoldingRegister(1,3,2,usModbusUserData,RT_WAITING_FOREVER);
|
||||||
// errorCode = eMBMasterReqReadHoldingRegister(1,3,2,RT_WAITING_FOREVER);
|
// errorCode = eMBMasterReqReadHoldingRegister(1,3,2,RT_WAITING_FOREVER);
|
||||||
// errorCode = eMBMasterReqReadWriteMultipleHoldingRegister(1,3,2,usModbusUserData,5,2,RT_WAITING_FOREVER);
|
// errorCode = eMBMasterReqReadWriteMultipleHoldingRegister(1,3,2,usModbusUserData,5,2,RT_WAITING_FOREVER);
|
||||||
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//记录出错次数
|
||||||
if (errorCode != MB_MRE_NO_ERR) {
|
if (errorCode != MB_MRE_NO_ERR) {
|
||||||
errorCount++;
|
errorCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//************************ Modbus<EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>߳<EFBFBD>***************************
|
//************************ Modbus从机轮训线程***************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void thread_entry_ModbusSlavePoll(void* parameter)
|
//函数定义: void thread_entry_ModbusSlavePoll(void* parameter)
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//入口参数:无
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//出口参数:无
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2>Editor<6F><72>Armink 2013-08-02 Company: BXXJS
|
//备 注:Editor:Armink 2013-08-02 Company: BXXJS
|
||||||
//******************************************************************
|
//******************************************************************
|
||||||
void thread_entry_ModbusSlavePoll(void* parameter)
|
void thread_entry_ModbusSlavePoll(void* parameter)
|
||||||
{
|
{
|
||||||
@ -83,11 +83,11 @@ void thread_entry_ModbusSlavePoll(void* parameter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//************************ Modbus<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>߳<EFBFBD>***************************
|
//************************ Modbus主机轮训线程***************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void thread_entry_ModbusMasterPoll(void* parameter)
|
//函数定义: void thread_entry_ModbusMasterPoll(void* parameter)
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//入口参数:无
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//出口参数:无
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2>Editor<6F><72>Armink 2013-08-28 Company: BXXJS
|
//备 注:Editor:Armink 2013-08-28 Company: BXXJS
|
||||||
//******************************************************************
|
//******************************************************************
|
||||||
void thread_entry_ModbusMasterPoll(void* parameter)
|
void thread_entry_ModbusMasterPoll(void* parameter)
|
||||||
{
|
{
|
||||||
@ -99,11 +99,11 @@ void thread_entry_ModbusMasterPoll(void* parameter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//**********************ϵͳ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>********************************
|
//**********************系统初始化函数********************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: int rt_application_init(void)
|
//函数定义: int rt_application_init(void)
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//入口参数:无
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//出口参数:无
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2>Editor<6F><72>Liuqiuhu 2013-1-31 Company: BXXJS
|
//备 注:Editor:Liuqiuhu 2013-1-31 Company: BXXJS
|
||||||
//********************************************************************
|
//********************************************************************
|
||||||
int rt_application_init(void)
|
int rt_application_init(void)
|
||||||
{
|
{
|
||||||
@ -127,11 +127,11 @@ int rt_application_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//**************************<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>RT-Thread<61><64><EFBFBD><EFBFBD>*************************************
|
//**************************初始化RT-Thread函数*************************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void rtthread_startup(void)
|
//函数定义: void rtthread_startup(void)
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//入口参数:无
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//出口参数:无
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2>Editor<6F><72>Armink 2011-04-04 Company: BXXJS
|
//备 注:Editor:Armink 2011-04-04 Company: BXXJS
|
||||||
//**********************************************************************************
|
//**********************************************************************************
|
||||||
void rtthread_startup(void)
|
void rtthread_startup(void)
|
||||||
{
|
{
|
||||||
|
@ -78,7 +78,7 @@ void IWDG_Feed(void);
|
|||||||
/***********************************************************************************************************/
|
/***********************************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD>
|
//软、硬件版本号定义
|
||||||
#define VERSION_SOFTWARE_MAJOR 1
|
#define VERSION_SOFTWARE_MAJOR 1
|
||||||
#define VERSION_SOFTWARE_MINOR 0
|
#define VERSION_SOFTWARE_MINOR 0
|
||||||
#define VERSION_HARDWARE_MAJOR 1
|
#define VERSION_HARDWARE_MAJOR 1
|
||||||
|
@ -60,18 +60,18 @@ void rt_hw_board_init()
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
static void RCC_Configuration(void)
|
static void RCC_Configuration(void)
|
||||||
{
|
{
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>鿪<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
//下面是给各模块开启时钟
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO
|
//启动GPIO
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | \
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | \
|
||||||
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | \
|
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | \
|
||||||
RCC_APB2Periph_GPIOE ,
|
RCC_APB2Periph_GPIOE ,
|
||||||
ENABLE);
|
ENABLE);
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>AFIO
|
//启动AFIO
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
||||||
//<2F><><EFBFBD><EFBFBD>ADCת<43><D7AA>ʱ<EFBFBD><CAB1>
|
//配置ADC转换时钟
|
||||||
RCC_ADCCLKConfig(RCC_PCLK2_Div8); //9M
|
RCC_ADCCLKConfig(RCC_PCLK2_Div8); //9M
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMAʱ<EFBFBD><EFBFBD>
|
//启动DMA时钟
|
||||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//ʹ<EFBFBD><EFBFBD>DMAʱ<EFBFBD><EFBFBD>
|
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//使能DMA时钟
|
||||||
/* Enable ADC1 and GPIOC clock */
|
/* Enable ADC1 and GPIOC clock */
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);
|
||||||
}
|
}
|
||||||
@ -106,17 +106,17 @@ static void GPIO_Configuration(void)
|
|||||||
{
|
{
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
|
||||||
/***************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F>ʼ<EFBFBD><CABC>*********************/
|
/***************数字输出IO初始化*********************/
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
|
|
||||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12; //<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>1 LED1 LED2
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12; //继电器1 LED1 LED2
|
||||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||||
|
|
||||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_14 | GPIO_Pin_15; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD><CCB5><EFBFBD>3 <20>̵<EFBFBD><CCB5><EFBFBD>2
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_14 | GPIO_Pin_15; //蜂鸣器 继电器3 继电器2
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||||
|
|
||||||
/*************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F>ʼ<EFBFBD><CABC>*********************/
|
/*************数字输入IO初始化*********************/
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
|
|
||||||
@ -125,29 +125,29 @@ static void GPIO_Configuration(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//*******************<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>*************************************
|
//*******************初始化独立看门狗*************************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void IWDG_Configuration(void)
|
//函数定义: void IWDG_Configuration(void)
|
||||||
//<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>
|
//描 述:初始化独立看门狗
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//入口参数:无
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//出口参数:无
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>=4*2^prer.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵֻ<D6B5><D6BB><EFBFBD><EFBFBD>256!ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>):Tout=40K/((4*2^prer)*rlr)ֵ 2S<32><53>ʱ
|
//备 注:分频因子=4*2^prer.但最大值只能是256!时间计算(大概):Tout=40K/((4*2^prer)*rlr)值 2S超时
|
||||||
//Editor<EFBFBD><EFBFBD>liuqh 2013-1-16 Company: BXXJS
|
//Editor:liuqh 2013-1-16 Company: BXXJS
|
||||||
//*******************************************************************
|
//*******************************************************************
|
||||||
static void IWDG_Configuration(void)
|
static void IWDG_Configuration(void)
|
||||||
{
|
{
|
||||||
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//ʹ<>ܶ<EFBFBD>IWDG->PR<50><52>IWDG->RLR<4C><52>д
|
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//使能对IWDG->PR和IWDG->RLR的写
|
||||||
IWDG_SetPrescaler(IWDG_Prescaler_64);//64<36><34>Ƶ
|
IWDG_SetPrescaler(IWDG_Prescaler_64);//64分频
|
||||||
IWDG_SetReload(1300);
|
IWDG_SetReload(1300);
|
||||||
IWDG_ReloadCounter();
|
IWDG_ReloadCounter();
|
||||||
IWDG_Enable();
|
IWDG_Enable();
|
||||||
}
|
}
|
||||||
//*******************ι<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>*************************************
|
//*******************喂独立看门狗*************************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void IWDG_Feed(void)
|
//函数定义: void IWDG_Feed(void)
|
||||||
//<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>
|
//描 述:初始化独立看门狗
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//入口参数:无
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>prer:<3A><>Ƶ<EFBFBD><C6B5>:0~7(ֻ<>е<EFBFBD>3λ<33><CEBB>Ч!)<29><>rlr:<3A><>װ<EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD>ֵ:<3A><>11λ<31><CEBB>Ч.
|
//出口参数:prer:分频数:0~7(只有低3位有效!),rlr:重装载寄存器值:低11位有效.
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>=4*2^prer.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵֻ<D6B5><D6BB><EFBFBD><EFBFBD>256!ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>):Tout=40K/((4*2^prer)*rlr)ֵ
|
//备 注:分频因子=4*2^prer.但最大值只能是256!时间计算(大概):Tout=40K/((4*2^prer)*rlr)值
|
||||||
//Editor<EFBFBD><EFBFBD>liuqh 2013-1-16 Company: BXXJS
|
//Editor:liuqh 2013-1-16 Company: BXXJS
|
||||||
//*******************************************************************
|
//*******************************************************************
|
||||||
|
|
||||||
void IWDG_Feed(void)
|
void IWDG_Feed(void)
|
||||||
@ -219,19 +219,19 @@ void BSP_Init (void)
|
|||||||
NVIC_Configuration();
|
NVIC_Configuration();
|
||||||
SysTick_Configuration();
|
SysTick_Configuration();
|
||||||
GPIO_Configuration();
|
GPIO_Configuration();
|
||||||
// TODO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>ʱע<CAB1>Ϳ<EFBFBD><CDBF>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
// TODO 方便调试,暂时注释看门狗,正式发布时需要打开
|
||||||
// IWDG_Configuration();
|
// IWDG_Configuration();
|
||||||
}
|
}
|
||||||
//****************************<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>********************************
|
//****************************防超时程序********************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: uint8_t AvoidTimeout(uint32_t TimeOfTimeout,uint32_t Period,uint8_t (*DetectCondition)())
|
//函数定义: uint8_t AvoidTimeout(uint32_t TimeOfTimeout,uint32_t Period,uint8_t (*DetectCondition)())
|
||||||
//<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TimeOfTimeoutʱ<74><CAB1><EFBFBD>ڣ<EFBFBD>ÿPeriodʱ<64><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>DetectCondition()<29><><EFBFBD>ص<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
|
//描 述:在TimeOfTimeout时间内,每Period时间检测一次DetectCondition()返回的值是否有效
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TimeOfTimeout<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʱ<EFBFBD>䣨<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>systick<EFBFBD><EFBFBD>
|
//入口参数:TimeOfTimeout:防超时总时间(单位:systick)
|
||||||
// Period <EFBFBD><EFBFBD>ÿPeriodʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>systick<EFBFBD><EFBFBD>
|
// Period :每Period时间检测一次,即时间因子(单位:systick)
|
||||||
// (*DetectCondition)()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ConditionValue<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱPeriodʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// (*DetectCondition)():检测条件,等于ConditionValue则条件满足,检测结束,否则延时Period时间继续检测
|
||||||
// ConditionValue <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// ConditionValue ;条件成立的值
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>TimeOfTimeoutʱ<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//出口参数:0:在TimeOfTimeout时间内,检测到条件成立
|
||||||
// 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>TimeOfTimeoutʱ<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>û<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// 1:在TimeOfTimeout时间内,没有检测到条件成立
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2>Editor<6F><72>Armink 2012-03-09 Company: BXXJS
|
//备 注:Editor:Armink 2012-03-09 Company: BXXJS
|
||||||
//**********************************************************************
|
//**********************************************************************
|
||||||
uint8_t AvoidTimeout(uint32_t TimeOfTimeout,uint32_t Period,uint8_t (*DetectCondition)(),uint8_t ConditionValue)
|
uint8_t AvoidTimeout(uint32_t TimeOfTimeout,uint32_t Period,uint8_t (*DetectCondition)(),uint8_t ConditionValue)
|
||||||
{
|
{
|
||||||
@ -250,11 +250,11 @@ uint8_t AvoidTimeout(uint32_t TimeOfTimeout,uint32_t Period,uint8_t (*DetectCond
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//************************************<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**************************************
|
//************************************延时函数**************************************
|
||||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void Delay(vu32 nCount)
|
//函数定义: void Delay(vu32 nCount)
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nCount <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
//入口参数:nCount :延时函数中,循环的次数
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//出口参数:无
|
||||||
//<EFBFBD><EFBFBD> ע<><D7A2>Editor<6F><72>Armink 2011-03-18 Company: BXXJS
|
//备 注:Editor:Armink 2011-03-18 Company: BXXJS
|
||||||
//**********************************************************************************
|
//**********************************************************************************
|
||||||
void Delay(vu32 nCount)
|
void Delay(vu32 nCount)
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* File : usart.c
|
* File : usart.c
|
||||||
* This file is part of RT-Thread RTOS
|
* This file is part of RT-Thread RTOS
|
||||||
* COPYRIGHT (C) 2006-2013, RT-Thread Development Team
|
* COPYRIGHT (C) 2006-2021, RT-Thread Development Team
|
||||||
*
|
*
|
||||||
* The license and distribution terms for this file may be
|
* The license and distribution terms for this file may be
|
||||||
* found in the file LICENSE in this distribution or at
|
* found in the file LICENSE in this distribution or at
|
||||||
|
@ -390,7 +390,7 @@ eMBMasterFuncReadDiscreteInputs( UCHAR * pucFrame, USHORT * usLen );
|
|||||||
eMBException
|
eMBException
|
||||||
eMBMasterFuncReadWriteMultipleHoldingRegister( UCHAR * pucFrame, USHORT * usLen );
|
eMBMasterFuncReadWriteMultipleHoldingRegister( UCHAR * pucFrame, USHORT * usLen );
|
||||||
|
|
||||||
/*<EFBFBD><EFBFBD> \ingroup modbus
|
/*! \ingroup modbus
|
||||||
*\brief These functions are interface for Modbus Master
|
*\brief These functions are interface for Modbus Master
|
||||||
*/
|
*/
|
||||||
void vMBMasterGetPDUSndBuf( UCHAR ** pucFrame );
|
void vMBMasterGetPDUSndBuf( UCHAR ** pucFrame );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user