基于STM32神舟系列开发板的串口通信源码
#include "stm32f10x.h" RCC_Config();//配置时钟 GPIO_Config();//配置输入输出 USART_Config();//配置发送接收 Put_String("请发送数据_"); while(1) { while(1) { Put_String("请发送数据_"); if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==SET) { USART_SendData(USART2,USART_ReceiveData(USART2)); } } } ErrorStatus HSEStartUpStatus;//枚举,失败是0,成功1 RCC_DeInit();//寄存器设置为默认值 RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振 产生振荡频率 HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等它起振 if(HSEStartUpStatus == SUCCESS) { RCC_HCLKConfig(RCC_SYSCLK_Div1);//RCC_SYSCLK_Div1——AHB时钟=系统时钟 RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//设置时钟源和频率倍数 RCC_PLLCmd(ENABLE);//使能PLL while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)//标志位被重置? {} RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//把pll时钟作为系统时钟源 while(RCC_GetSYSCLKSource()!=0x08)//当pll时钟源!=8 {} } RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);//使能这两个外设时钟(外围总线) RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); GPIO_InitTypeDef GPIO_InitStructure; //GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_5;//选中2,5引脚 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化外设 GPIOx 寄存器 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;///////// GPIO_Init(GPIOA,&GPIO_InitStructure);//再初始化寄存器 USART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_ClockInitStructure; 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_InitStructure.USART_Clock=USART_Clock_Disable; USART_ClockInitStructure.USART_Clock=USART_Clock_Disable; //USART_InitStructure.USART_CPOL=USART_CPOL_Low; USART_ClockInitStructure.USART_CPOL=USART_CPOL_Low;//数据低电平有效 //USART_InitStructure.USART_CPHA=USART_CPHA_2Edge; USART_ClockInitStructure.USART_CPHA=USART_CPHA_2Edge;//时钟相位 //USART_InitStructure.USART_LasrBit=USART_LastBit_Disable; USART_ClockInitStructure.USART_LastBit=USART_LastBit_Disable; //在SCLK引脚上输出最后发送的那个数据字的脉冲不从SCLK输出 USART_Init(USART2,&USART_InitStructure); USART_Cmd(USART2,ENABLE); while(*p) { USART_SendData(USART2,*p++); while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET) {} }
#include "stm32f10x_usart.h"
void RCC_Config(void);
void GPIO_Config(void);
void USART_Config(void);
void Put_String(u8 *p);
int main()
{
//GPIO.Pin选择待设置的 GPIO 管脚,使用操作符“| ”可以一次选中多个管脚。
}
void RCC_Config(void)
{
}
void GPIO_Config(void)
{
}
void USART_Config(void)
{
}
void Put_String(u8 *p)
{
}
关键词: STM32神舟系列开发板串口通

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码