基于STM32神舟系列开发板的串口通信源码

发布者:正在搬砖的河马71最新更新时间:2015-09-22 来源: eefocus关键字:STM32  神舟系列开发板  串口通信 手机看文章 扫描二维码
随时随地手机看文章
#include "stm32f10x.h"
#include "stm32f10x_usart.h"
 
void RCC_Config(void);
void GPIO_Config(void);
void USART_Config(void);
void Put_String(u8 *p);
 
int main()
{
 RCC_Config();//配置时钟
 GPIO_Config();//配置输入输出
 USART_Config();//配置发送接收
//GPIO.Pin选择待设置的 GPIO 管脚,使用操作符“| ”可以一次选中多个管脚。
 Put_String(" 请发送数据_ ");
 while(1)
 {
  while(1)
  {
   Put_String(" 请发送数据_ ");
   if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==SET)
   {
    USART_SendData(USART2,USART_ReceiveData(USART2));
   }
  }
 }
}
 
void RCC_Config(void)
{
 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);
}
 
void GPIO_Config(void)
{
 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);//再初始化寄存器
}
 
void USART_Config(void)
{
 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);
}
 
void Put_String(u8 *p)
{
 while(*p)
 {
  USART_SendData(USART2,*p++);
  while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET)
  {}
 }
}
关键字:STM32  神舟系列开发板  串口通信 引用地址:基于STM32神舟系列开发板的串口通信源码

上一篇:【STM32 Cotex-M3处理器系列编程】按键灯亮
下一篇:基于STM32神舟系列开发板的读取绝对式编码器源码

推荐阅读最新更新时间:2024-03-16 14:32

stm32之ADC oled显示
六路adc的显示结果 ** 一些基本的代码: ** 初始化ADC //初始化ADC void Adc_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, EN
[单片机]
<font color='red'>stm32</font>之ADC oled显示
STM32系统时钟默认设置
“我们一直都说STM32有一个非常复杂的时钟系统,然而在原子或者野火的例程中,只要涉及到时钟,我们却只能看到类似的库函数调用,如RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);这个仅仅只是起到开启挂载在APB2线上的USART1时钟的作用罢了,APB2的时钟频率是多少我们并不知道” 我们先来了解一些stm32的时钟结构。 这个图说明了STM32的时钟走向,从图的左边开始,从时钟源一步步分配到外设时钟。 从时钟频率来说,又分为高速时钟和低速时钟,高速时钟是提供给芯片主体的主时钟,而低速时钟只是提供给芯片中的RTC(实时时钟)
[单片机]
STM32的CAN总线的基本原理及实现过程
1、什么是CAN CAN是Controller Area Network 的缩写(简称称CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。 CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消
[单片机]
<font color='red'>STM32</font>的CAN总线的基本原理及实现过程
STM32 官方固件库简介
ARM公司为了能让不同的芯片公司生产的Cortex-M3芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准CMSIS标(CortexMicrocontrollerSoftwareInterfaceStandard),翻译过来是“ARMCortex?微控制器软件接口标准”。ST官方库就是根据这套标准设计的。 CMSIS分为3个基本功能层: 1)核内外设访问层:ARM公司提供的访问,定义处理器内部寄存器地址以及功能函数。 2)中间件访问层:定义访问中间件的通用API,也是ARM公司提供。 3)外设访问层:定义硬件寄存器的地址以及外设的访问函数。 CMSIS层在整个系统中是处于中间层,向下负责与内核和各个外设直接
[单片机]
基于STM32智能家居系统的设计与实现
智能家居(又称智能住宅)是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的安全、高效、舒适、便利、环保的居住环境。利用综合布线技术、网络通信技术、智能家居一系统设计方案安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统。对比普通家居系统,智能家居不仅满足了人们对居住环境的基本要求,提供舒适安全且宜人的家庭生活空间。还能够主动提供全方位的信息服务,联合外部资源,做出智能化响应。但这类系统通常代价昂贵,控制方式单一,且易受到干扰。因此,在设计实现智能控制的同时,研制一个成本低、实用性强并能普及寻常百姓家的智能家居系统成为必然趋势。 本设
[单片机]
基于<font color='red'>STM32</font>智能家居系统的设计与实现
STM32 启动代码汇编指令详解
● EQU 伪指令EQU用来为一个数字常量或一个和内核寄存器相关的数值或一个和程序计数器相关的数值定义的一个符号名称,类似于C语言中的 #define 。 语法格式:name EQU expr{ , type} 注意:语法格式中的{ }不属于语法格式的部分,并且{ }中的内容是可选的; name:数值(expr)的符号名称; expr:一个与内核寄存器相关的地址,或一个绝对地址,或一个与PC相关的地址,或一个32位整型常量; type:可选项,它可以是ARM、THUMB、CODE16、CODE32或DATA中的任何一个。 举个例子: fiq EQU 0x1C,CODE32 ● AREA 伪指
[单片机]
STM32启动文件初探之startup_stm32f10x_hd.s(Reset_Handler函数)
该文件主要实现目的: 设置初始SP 设置初始PC=Reset_Handler 设置向量表入口地址,并初始化向量表 调用SystemInit,把系统时钟配制成72M,SystemInit在库文件system_stm32f10.c定义 调转到标号_main,最终来到C程序文件 ; Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0
[单片机]
stm32-vref+ vref- vdda vssa
VDDA,VSSA则是模拟部分的电源,这个必须接,否则无法串口下载代码。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved