如何采用STM32单片机串口接收数据.doc

上传人:白大夫 文档编号:3429805 上传时间:2019-08-24 格式:DOC 页数:5 大小:25KB
返回 下载 相关 举报
如何采用STM32单片机串口接收数据.doc_第1页
第1页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《如何采用STM32单片机串口接收数据.doc》由会员分享,可在线阅读,更多相关《如何采用STM32单片机串口接收数据.doc(5页珍藏版)》请在三一文库上搜索。

1、如何采用STM32单片机串口接收数据0目标1STM32串口简介2硬件设计3软件设计4下载验证0.目标利用串口1不停的打印信息到电脑上,同时接收从串口发过来的数据,把发送过来的数据直接送回给电脑。1.STM32串口简介串口设置的一般步骤可以总结为如下几个步骤:1)串口时钟使能,GPIO时钟使能2)串口复位3) GPIO端口模式设置4)串口参数初始化5)开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)6)使能串口7)编写中断处理函数注:对于复用功能的IO,我们首先要使能GPIO时钟,然后使能复用功能时钟,同时要把GPIO模式设置为复用功能对应的模式。查看手册STM32 中文参考手册 V

2、10P110 的表格“8.1.11 外设的 GPIO 配置:2硬件设计(1)LED0接PA0(2)串口13.软件设计新建工程:其中SYSTEM下放置原子哥提供的三个文件夹delay、sys、uart(及其文件),HARDWARE下建LED文件夹,及其内建LED.C与LED.H文件。uart中串口函数:voiduart_init(u32bound)/GPIO端口设置GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_APB2Pe

3、riphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);/使能USART1,GPIOA时钟/USART1_TXPA.9GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;/PA.9GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;/复用推挽输出GPIO_Init(GPIOA,/USART1_RXPA.10GPIO_InitStructure.GPIO_Pin=GPI

4、O_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;/浮空输入GPIO_Init(GPIOA,/Usart1NVIC配置NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreempTIonPriority=3;/抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;/子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABL

5、E;/IRQ通道使能NVIC_Init(/根据指定的参数初始化VIC寄存器/USART初始化设置USART_InitStructure.USART_BaudRate=bound;/一般设置为9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;/字长为8位数据格式USART_InitStructure.USART_StopBits=USART_StopBits_1;/一个停止位USART_InitStructure.USART_Parity=USART_Parity_No;/无奇偶校验位USART_InitStructure

6、.USART_HardwareFlowControl=USART_HardwareFlowControl_None;/无硬件数据流控制USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;/收发模式USART_Init(USART1,/初始化串口USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);/开启中断USART_Cmd(USART1,ENABLE);/使能串口LED.c内容:#include“led.h”/初始化PA0为输出口。并使能这个口的时钟/LEDIO初始化voidLED_Init(

7、void)GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);/使能PA端口时钟GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;/LED0-PA0端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/IO口速度为50MHzGPIO_Init(GPIOA,/根据设定参数初始化GPIOA0GPIO_

8、SetBits(GPIOA,GPIO_Pin_0);/PA0输出高led.h:#ifndef_LED_H#define_LED_H#include“sys.h”#defineLED0PAout(0)/PA0voidLED_Init(void);/初始化#endif主函数:#include“led.h”#include“delay.h”#include“sys.h”#include“usart.h”intmain(void)u8t;u8len;u16TImes=0;delay_init();/延时函数初始化NVIC_ConfiguraTIon();/设置NVIC中断分组2:2位抢占优先级,2位响

9、应优先级uart_init(9600);/串口初始化为9600LED_Init();/LED端口初始化while(1)if(USART_RX_STAlen=USART_RX_STA/得到此次接收到的数据长度printf(“rn您发送的消息为:rnrn”);for(t=0;tUSART_SendData(USART1,USART_RX_BUFt);/向串口1发送数据while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);/等待发送结束printf(“rnrn”);/插入换行USART_RX_STA=0;elseTImes+;if(times%5000=0)printf(“rn口袋里的超超 串口实验rn”

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1