STM32F103学习笔记(四) 串口实验

发布者:Huixin8888最新更新时间:2017-09-24 来源: eefocus关键字:STM32F103  串口实验 手机看文章 扫描二维码
随时随地手机看文章

串口通信,首先进行串口的设置:

 串口设置的一般步骤可以总结为如下几个步骤:
1) 串口时钟使能, GPIO 时钟使能
2) 串口复位
3) GPIO 端口模式设置
4) 串口参数初始化
5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)
6) 使能串口
7) 编写中断处理函数
串口设置原子已经写在usart.c里边了,会拉进来用就行了


  1. //初始化 IO 串口 1  

  2. //bound:波特率  

  3. void uart_init(u32 bound)  

  4. {  

  5. GPIO_InitTypeDef GPIO_InitStructure;  

  6. USART_InitTypeDef USART_InitStructure;  

  7. NVIC_InitTypeDef NVIC_InitStructure;  

  8. //①串口时钟使能, GPIO 时钟使能,复用时钟使能  

  9. RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|  

  10. RCC_APB2Periph_GPIOA, ENABLE); //使能 USART1 ,GPIOA 时钟  

  11. //②串口复位  

  12. USART_DeInit(USART1);   //复位串口 1  

  13. //③GPIO 端口模式设置  

  14. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //ISART1_TX PA.9  

  15. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

  16. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出  

  17. GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化 GPIOA.9  

  18. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //USART1_RX PA.10  

  19. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入  

  20. GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化 GPIOA.10  

  21. //④串口参数初始化  

  22. USART_InitStructure.USART_BaudRate = bound;  //波特率设置  


主要看主函数是怎么写的,main.c:


  1. #include "led.h"  

  2. #include "delay.h"  

  3. #include "key.h"  

  4. #include "sys.h"  

  5. #include "usart.h"  

  6. int main(void)  

  7. {  

  8. u8 t;  

  9. u8 len;  

  10. u16 times=0;  

  11. delay_init();    //延时函数初始化   

  12. NVIC_Configuration();   //设置 NVIC 中断分组 2  

  13. uart_init(9600);  //串口初始化波特率为 9600  

  14. LED_Init();   //LED 端口初始化  

  15. KEY_Init();  //初始化与按键连接的硬件接口  

  16. while(1)  

  17. {  

  18. if(USART_RX_STA&0x8000)  

  19.  { len=USART_RX_STA&0x3f; //得到此次接收到的数据长度  

  20. printf("\r\n 您发送的消息为:\r\n\r\n");  

  21. for(t=0;t

  22. { USART_SendData(USART1, USART_RX_BUF[t]); //向串口 1 发送数据  

  23.  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);  

  24. //等待发送结束  

  25. }  

  26. printf("\r\n\r\n"); //插入换行  

  27. USART_RX_STA=0;  

  28. }else  

  29. { times++;  

  30. if(times%5000==0)  

  31. { printf("\r\n 串口实验\r\n");  

  32. printf("哥很霸气\r\n\r\n");  

  33. }  

  34. if(times%200==0)printf("请输入数据,以回车键结束\n");  

  35. if(times%30==0)LED0=!LED0; //闪烁 LED,提示系统正在运行.  

  36. delay_ms(10);  

  37. }  

  38. }  


那个NVIC_Configuration();可以点击右键go to看它的定义,设置NVIC中断分组2


  1. USART_RX_STA&0x8000)  

  2.  { len=USART_RX_STA&0x3f;  

说实话,这两句没看懂,只知道0x8000对应的2进制 100000000000000  ,0x3fff 对应的2进制  0011111111111111

USART_SendData(USART1, USART_RX_BUF[t]); //向串口 1 发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
第一句,其实就是发送一个字节到串口。第二句呢,就是我们在我们发送一个数据到串口
之后,要检测这个数据是否已经被发送完成了。 USART_FLAG_TC 是宏定义的数据发送完成标识符


关键字:STM32F103  串口实验 引用地址:STM32F103学习笔记(四) 串口实验

上一篇:STM32F103学习笔记(五) 外部中断
下一篇:stm32f103学习笔记(三)按键输入(IO口输入)

推荐阅读最新更新时间:2024-03-16 15:38

STM32F103(按键控制流水灯方向)
1:要求 用按键控制流水灯方向 2:基于Stm32F103RB 3:型号CT117E /*STM32库头文件*/ #include stm32f10x_gpio.h #include stm32f10x_rcc.h #include stm32f10x.h #include core_cm3.h #include misc.h GPIO口的设置,还有宏的定义 #define LED0 GPIO_Pin_8 #define LED1 GPIO_Pin_9 #define LED2 GPIO_Pin_10 #define LED3 GPIO_Pin_11 #define LED4 GPIO_Pin_1
[单片机]
单片机 如何给MSP430开发板下载程序 并做一个串口实验
1简介 我们需要下面这些软件 CH340驱动软件:是使用BSL下载程序的话,电脑需要和单片机通信,他们之间的桥梁就是CH340芯片,电脑想要识别CH340芯片就需要驱动。下载程序需要使用CH340芯片,让单片机接受指令也需要使用CH340芯片,总之电脑和单片机之间的通信就是靠CH340芯片。 IAR软件:我们需要在这个软件里面写c代码,然后利用这个软件的编译功能,将c代码编译成hex文件,hex文件就是机器文件,单片机依靠这个文件来工作,这个文件最终是要下载到单片机里面去的。 串口助手软件:下载程序有专门用的软件,和单片机相互通信也有专门的软件,串口助手软件可以帮助你和单片机通信,可以在串口助手软件中写一个字符串发送给单片机,同
[单片机]
单片机 如何给MSP430开发板下载程序 并做一个<font color='red'>串口实验</font>
STM32F103对于固件库V3.5.0打开和关闭总中断
#define CLI() __set_PRIMASK(1) //关闭总中断 #define SEI() __set_PRIMASK(0) //打开总中断 __set_PRIMASK()在V3.5.0库中的core_cm3.h中,定义如下 static __INLINE void __set_PRIMASK(uint32_t priMask) { register uint32_t __regPriMask __ASM( primask ); __regPriMask = (priMask); }
[单片机]
stm32F103入门学习--程序烧录的几种方法
st-link烧录程序(方法一) 由于之前买过原子开发板,所以首先采用st-link下载,有需要的可以去网上单独购买(50元多),不过先看完整个教程看哪种方法适合你。该方法需要接两处,一处是st-link排针口,因为不能提供电源,所以另一处是电源,如下图所示,左边白色的为st-link。 采用这种方法首看你的板子是否有JTAG/SWD调试接口(20引脚排针口),不然买了st-link也不好用。关于什么是JTAG调试这里不讲,不太用,有兴趣的话可以百度。用的最多的SWD调试。 插入st-link后在 设备管理器中可以看到,出现黄色叹号,如下图红色框中其他设备所示。 安装相应的驱动,根据电脑的位数选择合适的驱动安装,比如我
[单片机]
<font color='red'>stm32F103</font>入门学习--程序烧录的几种方法
STM32-(04):STM32F103VCT6芯片内部资源分析
外形图 STM32系列 如图所示:(种类是满足用户不同的需求:内存/尺寸/引脚数) 纵坐标是flash内存大小,横坐标是引脚数 QFN(方形扁平无引脚封装) LQFP(薄型四方扁平式封装):引脚在四周 BGA(焊球阵列封装):引脚在芯片下面 内部资源 内核 -ARM 32位 Cortex - M 3处理器 -高达72 MHz -单周期乘法和硬件除法 内存 -256 KB 的 Flash -48 KB 的 SRAM 时钟,复位和电源管理 -2.0 V ~3.6 V 电源电压( I / O 等于电源电压) -上电复位( POR ),掉电复位( PDR ),可编程的电压监控(比如当用电池供电,软件可监控电压,低电压预警) -4~1
[单片机]
STM32-(04):<font color='red'>STM32F103</font>VCT6芯片内部资源分析
STM32F103——DMA
DMA的基本介绍 DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输:在没有CPU的任何干预下,将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。 我们知道CPU有转移数据、计算、控制程序转移等很多功能,系统运作的核心就是CPU,CPU无时不刻的在处理着大量的事务,比方说数据的复制和存储数据,如果我们把这部分的CPU资源拿出来,让CPU去处理其他的复杂计算事务,是不是能够更好的利用CPU的资源呢?因此:转移数据(尤其是转移大量数据)我们可以不需要CPU参与。比如希望外设A的数据拷贝到外设B,只要给两种外设提供一条数据通路,直接让数据由外设
[单片机]
<font color='red'>STM32F103</font>——DMA
STM32F103ZET6 — EXTI
STM32F103ZET6 支持 20 个外部中断输入(EXIT0~EXIT19),其中有4个: EXTI线16连接到PVD输出 EXTI线17连接到RTC闹钟事件 EXTI线18连接到USB唤醒事件 EXTI线19连接到以太网唤醒事件(只适用于互联型产品) 另外的16个均可以作为外部输入中断,其中: EXIT0~EXIT4 有独立的中断向量 EXIT6~EXIT9 共享一个中断向量 EXTI9_5_IRQHandler EXIT10~EXIT16 共享一个中断向量 EXTI15_10_IRQHandler 共享的中断向量需要在对应的 ISR 中通过读取 Pending 的标志位来判断到底是哪个信号上触发的中断 单板
[单片机]
STM32F103RB 实作笔记(八)- IWDG 内部看门狗试验
IWDG特性说明 IWDG(Independent WatchDog,独立看门狗),从字面上看,好像是设置了一个安全系统,防止外来的干扰;从 STM32 操作说明上看,实际上是放了一条狗咬自己(Reset复位),不想被咬就要不断的**”喂狗“**,而且是放出来后就关不回去(启动看门狗工作,启动后就不能停)?!这个功能在不想让自己陷入打瞌睡、昏迷的条件下是很好用的。 其中,下命令是由 KR 负责;调整喂狗的时间是 PR (时长)和 RLR(计数) 组合; 这一段描述是 KR 用0xCCCC 打开 WDG 后,就要定时 用 0xAAAA ”喂狗“;要调整”喂狗的时间“就要由 KR=0x5555 打开后,调整 PR 和 RLR。从
[单片机]
<font color='red'>STM32F103</font>RB 实作笔记(八)- IWDG 内部看门狗试验
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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