2019-07-20 06:34发布
zhangjinhui 发表于 2018-8-15 14:50 我在论坛上下载别人的程序,但是用modbuspoll软件,但是都是timerout为什么,我自己移植的程序也是这样
最多设置5个标签!
BOOL
xMBPortTimersInit( USHORT usTim1Timerout50us )
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_DeInit(TIM2);
/*
3.5¸ö×Ö·ûê±¼äÇø·Ö2»í¬μÄÖ¡£¬¼′½óêÕμ½μÄὸö×Ö·ûÖ®¼äê±¼ä¼ä¸ôD¡óú3.5¸ö×Ö·û
ê±¼äê±èÏÎaêÇí¬ò»¸öÖ¡μÄ£¬èç1û¼ä¸ô′óóú3.5¸ö×Ö·ûê±¼äÔòèÏÎaêÇ2»í¬Ö¡μÄ
Ôúò»°ãμÄ′®¿úí¨DÅÖD£¬·¢Ëí1¸ö×Ö·ûDèòa£o1λÆeê¼Î»£¬8λêy¾Y룬1λD£Ñéλ(¿éÎT),
1λí£Ö1λ,×ü12 1+8+1+1 = 11룬3.5¸ö×Ö·ûê±¼ä¾íêÇ 3.5 * 11 = 38.5룬
¼ùèç2¨ìØÂêêÇ9600,ÄÇÃ′′«êä1λμÄê±¼äêÇ1000/9600 = 0.10416667(ms) ,
ÕaÑù£¬3.5¸ö×Ö·ûê±¼ä¾í′óÔ¼êÇ 4 ms ,¼′¶¨ê±Æ÷DèòaμÄÖD¶Ïê±¼ä
*/
#if 0
TIM_TimeBaseStructure.TIM_Period = 0x7E54; //CLK==24MHz ((1000000000/9600)*11*3.5)/(1000/24) == 0x7e54
TIM_TimeBaseStructure.TIM_Prescaler = 0x3;
#endif
// Õa¸ö¾íêÇÔ¤·ÖÆμÏμêy£¬7200/72M = 0.0001,¼′ÿ100us¼ÆêyÖμ¼ó1
//10us x 50 = 5ms,¼′5msÖD¶Ïò»′Î
TIM_TimeBaseStructure.TIM_Period = 50;
TIM_TimeBaseStructure.TIM_Prescaler = (7200 - 1);
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
// TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2, ENABLE);
return TRUE;
}
这是软件发了查询 但你的设备数据没有返回才 timerout的
软件的话我觉得modbus poll调试挺好用的
一周热门 更多>