STM32
直播中

刘刚

7年用户 1000经验值
私信 关注
[问答]

求大佬分享stm32f103串口程序

求大佬分享STM32f103串口程序

回帖(1)

陈蓓萤

2021-12-14 11:49:31

#include "stm32f10x.h"

void Delay(u32);
void fputc(u8);
void uart_init(u32);

int main(void){                                     

        GPIO_InitTypeDef  GPIO_InitStructure;
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
        uart_init(115200);         //´®¿Ú³õʼ»¯Îª115200               
  
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                            //LED0-->PB.5 ¶Ë¿ÚÅäÖÃ
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //ÍÆÍìÊä³ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //IO¿ÚËÙ¶ÈΪ50MHz
  GPIO_Init(GPIOB, &GPIO_InitStructure);                             //³õʼ»¯GPIOB.5
  
        GPIO_ResetBits(GPIOB, GPIO_Pin_5);
                 while(1)
        {
                        fputc(0x9);
                        Delay(10);   
               
        }
}

void uart_init(u32 bound){
  //GPIO¶Ë¿ÚÉèÖÃ
  GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);        //ʹÄÜUSART1£¬GPIOAʱÖÓ
  
        //USART1_TX   GPIOA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸´ÓÃÍÆÍìÊä³ö
  GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.9
   
  //USART1_RX          GPIOA.10³õʼ»¯
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿ÕÊäÈë
  GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.10  


  
   //USART ³õʼ»¯ÉèÖÃ

        USART_InitStructure.USART_BaudRate = bound;//´®¿Ú²¨ÌØÂÊ
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñʽ
        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); //³õʼ»¯´®¿Ú1
  USART_Cmd(USART1, ENABLE);                    //ʹÄÜ´®¿Ú1

}

void fputc(u8 ch){
   
  USART_SendData(USART1, (unsigned char) ch);   
  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}

void Delay(u32 count){
   
        u32 i=0;
        for(;i }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分