M≠0 发表于 2015-10-2 20:01:33

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

写了一个串口通信实验,接的蓝牙,发送指令后,正确的话应该能收到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=temp;
   }
   DelayMS(100);

}
}





你好我好大家好! 发表于 2015-10-3 10:20:00

硬件连接有问题吗

M≠0 发表于 2015-10-3 12:44:27

你好我好大家好! 发表于 2015-10-3 10:20
硬件连接有问题吗

放假了,没用示波器测,用万用表测是通的

你好我好大家好! 发表于 2015-10-3 13:01:49

M≠0 发表于 2015-10-3 12:44
放假了,没用示波器测,用万用表测是通的

等先用示波器测测看看
页: [1]
查看完整版本: STM8L串口通信,只能接收,无法发送