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

STM8L串口通信,只能接收,无法发送

[复制链接]
M≠0 提问时间:2015-10-2 20:01 /
写了一个串口通信实验,接的蓝牙,发送指令后,正确的话应该能收到OK,但是现在就是没有返回。
void USART_Config(void)
{
  GPIO_Init(GPIOC,GPIO_Pin_6,GPIO_Mode_In_PU_No_IT);
  GPIO_Init(GPIOC,GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Fast);  
  
  CLK_PeripheralClockConfig(CLK_Peripheral_USART1,
                            ENABLE);
  USART_DeInit(USART1);
  
  USART_Init(USART1,
             (u32)9600,
             USART_WordLength_8b,
             USART_StopBits_1,
             USART_Parity_No,
             (USART_Mode_TypeDef)(USART_Mode_Tx |USART_Mode_Rx ));
  
  
  USART_Cmd(USART1,ENABLE);
  
  
}

PUTCHAR_PROTOTYPE
{
  if(ch =='\n')
  {
    while(!(USART1->SR & USART_FLAG_TC ));
    USART_SendData8(USART1,'\r');
    while(!(USART1->SR & USART_FLAG_TC ));
  }
  
  while(!(USART1->SR & USART_FLAG_TXE ));
  USART_SendData8(USART1,ch);
  while(!(USART1->SR & USART_FLAG_TXE ));
  return (ch);
}

//主函数
void main(void)
{
  char zsh[]="AT+CB\n";
//  disableInterrupts();
//  enableInterrupts();
  
  CLK_Config();
  USART_Config();
/*  
    GPIO_Init(GPIOB,
              GPIO_Pin_0,
              (GPIO_Mode_TypeDef)GPIO_Mode_Out_PP_High_Slow);//BT_RESET/
  */
  while(1){
//    scan_key();
/*   
   GPIOB ->ODR =~GPIOB ->ODR;
   DelayMS(1000);
   GPIOB ->ODR =~GPIOB ->ODR;
*/
   cnt = 0;
   printf("AT+CA\r\n");
   
   while(temp !=' \n'){
     while(!(USART_FLAG_RXNE & USART1_SR) );
     temp = USART_ReceiveData8(USART1);
     buf[cnt++]=temp;
   }
   DelayMS(100);

  }
}





收藏 评论3 发布时间:2015-10-2 20:01

举报

3个回答
你好我好大家好! 回答时间:2015-10-3 10:20:00
硬件连接有问题吗
M≠0 回答时间:2015-10-3 12:44:27

放假了,没用示波器测,用万用表测是通的
你好我好大家好! 回答时间:2015-10-3 13:01:49
M≠0 发表于 2015-10-3 12:44
放假了,没用示波器测,用万用表测是通的

等先用示波器测测看看
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版