你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用STM32F103的RS232串口做modbus通信,怎么连接不上设备

[复制链接]
jason-415838 提问时间:2013-4-2 20:54 /
我使用STM32F103VB和触摸屏相连,使用rs232串口,使用的是modbus协议做通信,触摸屏做主站,STM32做从站,STM32连接不上触摸屏,以下是我的中断程序,请哪位大侠帮我看看是什么问题不能通信的??拜托了!!
void USART_ITHandle(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE)== SET)                        //接收中斷
{
  USART_ClearITPendingBit(USART1, USART_IT_RXNE);                        //清除接收中斷位
  if(receTimeOut>1)
  {
   receCount = 0;
   Timer2_enable();
   receTimeOut = 0;
  }
  receBuf[receCount] = USART_ReceiveData(USART1);
  receCount++;
  Timer2_enable();
  receCount &= 0x0f;
}
else if(USART_GetITStatus(USART1, USART_IT_TC) == SET)                  //檢驗發送完成中斷
{
  USART_ClearFlag(USART1, USART_FLAG_TC);                                          //清除發送完成標志位
  if(sendPosi < sendCount)
  {
   sendPosi++;
   USART_SendData(USART1, sendBuf[sendPosi]);
  }
  else
  {
   receCount = 0;
  }
}
}
void TIM2_Configuration(void)                                  //定時2ms
{
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);          //配置RCC,使能TIM2
  TIM_TimeBaseStructure.TIM_Prescaler = 7199;                          //時鐘預分頻數
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;         //向上計數
  TIM_TimeBaseStructure.TIM_Period = 14;                                                //自動重裝載寄存器周期的值
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;                                        //時間分割值
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);                                //初始化定時器2
  TIM_ClearFlag(TIM2, TIM_FLAG_Update);                                                        //清除標志
}                                                                          
/*******************************************/
/*******************************************/
/*******************************************/
void Timer2_enable(void)
{
TIM_ClearFlag(TIM2, TIM_FLAG_Update);                                                   //清除標志
TIM_SetCounter(TIM2, 0x00);                                                                   //設置寄存器值為0
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);                                           //使能中斷
TIM_Cmd(TIM2, ENABLE);                                                                                   //開啟定時器
}
/*******************************************/
/*******************************************/
/*******************************************/
void Timer2_disable(void)
{
// TIM_ITConfig(TIM2, TIM_IT_Update |TIM_IT_Trigger, DISABLE);
TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE);
TIM_Cmd(TIM2, DISABLE);
}
/*******************************************/
/*******************************************/
/*******************************************/
void TIM2_ITHandle(void)
{
if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)                 //檢測是否發生溢出更新事件
{
  TIM_ClearITPendingBit(TIM2, TIM_IT_Update);                         //清除更新標志位
//  checkComm0Modbus();
  if(receTimeOut
收藏 评论1 发布时间:2013-4-2 20:54

举报

1个回答
jason-415838 回答时间:2013-4-3 22:08:20

RE:使用STM32F103的RS232串口做modbus通信,怎么连接不上设备

有人用过RS232做modbus通信吗

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版