STM32F103入门串口程序,调试很久依然不对,求赐教(附代码)

2019-08-14 07:53发布

很基本的一个程序,最开始似乎是硬件问题,换了个接口好了。然后我想写从PC发到32再发回来的程序,没反应,改回之前的程序也没反应了。弄出来打算调ADC的。
小白一只,恳请各位大佬赐教。已经搞了几个小时了。现在都凌晨4点了= =
以下是配置程序:
#include<stm32f10x.h>
#include<stdio.h>
void USART1_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        USART_InitStructure.USART_BaudRate=115200;
        USART_InitStructure.USART_WordLength=USART_WordLength_8b;
        USART_InitStructure.USART_StopBits=USART_StopBits_1;
        USART_InitStructure.USART_Parity=USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode=USART_Mode_Rx | USART_Mode_Tx;
        USART_Init(USART1,&USART_InitStructure);
        USART_Cmd(USART1,ENABLE);
}

int fputc(int ch,FILE *f)
{
        USART_SendData(USART1,(unsigned char)ch);
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
        return (ch);
}

main函数:
#include<stm32f10x.h>
#include<stdio.h>
#include<usart1.h>

int main(void)
{
        USART1_Config();
        printf(" this is a printf demo ");

}
串口助手没收到数据,串口打开正常

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
八极天
2019-08-14 10:57
想成功发送在前面加上#if 1 #pragma import(__use_no_semihosting)              //标准库需要的支持函数                  struct __FILE  {          int handle;  };   FILE __stdout;        //定义_sys_exit()以避免使用半主机模式     _sys_exit(int x)  {          x = x;  }  //重定义fputc函数  int fputc(int ch, FILE *f) {                  while((USART1->SR&0X40)==0);//循环发送,直到发送完毕            USART1->DR = (u8) ch;               return ch; } #endif

一周热门 更多>