STM32串口usart发送数据
主函数请直接关注41行到47行代码!!
#include "stm32f10x.h" // 相当于51单片机中的 #include <reg51.h>
#include "stm32f10x_gpio.h"
#include "stm32f10x_usart.h"
#include "led.h"
#include "key.h"
#include "key interrupt.h"
#include "delay.h"
#include "usart1.h"
#include "stdio.h"
#include "usart.h" int main()
{
/*
* 一、点亮一个LED灯
*/ /*点亮一个LED灯*/
//red_on();//红灯
//green_on();//绿灯
//blue_on();//蓝灯 /*
* 二、按键通过按键实现控制led的亮灭(有两种情况)
*/ //key1();
//key2();
//key3(); /*
* 三、按键K1,K2中断控制LED亮灭
*/ //interrupt();//详细代码见key interrupt.c文件 /*
* 四、串口
*/ usart1_config(); //串口初始化
USART_SendData(USART1,'A'); //发送数据A
printf("kinson\n"); //用printf打印数据kinson,说明:printf默认打印输出在控制台,现在修改源码打印输出至串口
while(); /*
* 五、 Systick时钟定时
*/ /*
SystemInit();//初始化系统,使得系统频率为72兆 //配置Systick为10us中断一次,时间到后触发定时中断
//进入stm32fxx_it.c文件的SysTick_Handle处理,通过数中断次数计时 led_gpio_init();//LED端口初始化
while(1)
{ GPIO_Setbits(GPIO,GPIO_Pin_15);
delay_ms(1000);//延时
GPIO_ResetBits(GPIO,GPIO_Pin_15);
delay_ms(1000);//延时
while(1);
}
*/
}
新建一个文件配置串口usart相关的配置
#include "usart1.h"
#include "stm32f10x.h"//相当于stdio头文件
#include "stm32f10x_gpio.h"//配置GPIO要用的头文件
#include "stm32f10x_usart.h"//配置串口usart要用的头文件
#include "misc.h" //配置中断NVIC要用的头文件
#include "stdio.h" //为printf所用 /*串口1的配置函数*/
void usart1_config()
{
//第一步:时钟配置(GPIO时钟,串口时钟)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO,ENABLE);
//第二步,GPIO配置,Rx(接受)为PA10,Tx(发送)为PA9
GPIO_InitTypeDef a; //定义结构体
/*配置PA9为复用推挽输出*/
a.GPIO_Pin=GPIO_Pin_9; //端口9,依据来源看电路图
a.GPIO_Speed=GPIO_Speed_50MHz;
a.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA,&a); //初始化 /*配置PA10为浮空输入*/
a.GPIO_Pin=GPIO_Pin_10;
a.GPIO_Mode=GPIO_Mode_IN_FLOATING; //浮空输入
a.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&a); //第二步:NVIC配置
/*NVIC嵌套向量中断控制器*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //优先级配置
NVIC_InitTypeDef b;
b.NVIC_IRQChannel = USART1_IRQn;//USART1_IRQn串口中断
b.NVIC_IRQChannelPreemptionPriority = ;//0 1 2 3 4
b.NVIC_IRQChannelSubPriority = ;//0 1 2 3 4
b.NVIC_IRQChannelCmd = ENABLE; //使能
NVIC_Init(&b); //第三步:串口配置
USART_InitTypeDef c;
c.USART_BaudRate=; //波特率
c.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件控制流
c.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //模式,此模式为发送和接受
c.USART_WordLength=USART_WordLength_8b;//字长8
c.USART_Parity=USART_Parity_No; //奇偶校验n
c.USART_StopBits=USART_StopBits_1; //停止位1
USART_Init(USART1,&c);
//第四步:串口时能
USART_Cmd(USART1,ENABLE);
} /*以下代码为printf能在发送数据给串口所用*/
int fputc(int ch,FILE* ffdsfa)
{
USART_SendData(USART1,ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);//等待发送完成
return ch;
}
新建.h文件(不同文件之间的函数调用必须掌握的知识点)
#ifndef _USART1_H_
#define _USART1_H_ void usart1_config(); #endif
STM32串口usart发送数据的更多相关文章
- STM32的USART发送数据时如何使用TXE和TC标志
在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器,另一个是程序看不到的移位寄存器,对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束. ...
- STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和串口只发送数据不能接收数据问题
STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085的问题讨论:http://www.rt-thr ...
- STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) http://home.eeworld.com.cn/my/space-uid-338727-blogid-47 ...
- STM32串口USART的使用方法和程序
通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准NR 异步串行数据格式的外部设备之间进行全双工数据交换. USART利用分数波特率发生器提供宽范围的波特率选择,支持同步单向通信和半 ...
- stm32串口USART 硬件流控 --学习笔记
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即&qu ...
- C#串口通信发送数据
1 发送数据 需要2个串口 http://www.openedv.com/thread-228847-1-1.html 下载源文件 File_Protocol_Test.rar
- STM32 串口USART DMA方式发送接收数据
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 头文件 USART3_DR的地址 DMA的通道 DMA的中断 USART接收回调函数 头 ...
- STM32串口DMA接收数据错位——暴力解决方法
背景:两片STM32通过串口通信,为了减小CPU负担,采用DMA进行通信,发送端为STM32F103C8T6,接收端为STM32F407VET6.在调试的过程中发现,一直出现数据错位的问题,接收端尝试 ...
- 为何串口dma发送数据可能不完整
串口dma数据发送不完整, 1. 通过打印log说明数据合成,送给dma buff都是正常的. 2. 数据通过硬件串口直接配置,是正常的 3. 数据通过单片机dma转发后数据异常,通过检查发现 dma ...
随机推荐
- Axure实现多用户注册验证
*****多用户登录验证***** 一.(常规想法)方法:工作量较大,做起来繁琐 1.当用户名和密码相同时怎么区分两者,使用冒号和括号来区分: eg. (admin:123456)(123456:de ...
- appium+python测试app使用相对坐标定位元素
我们获取到的是绝对坐标,如果换一个屏幕分辨率不同的手机那这个坐标自然会发生变化,要实现不同手机均能实现点击同一控件自然要用到相对坐标了,具体方法如下: 1.获取当前空间的绝对坐标(x1,y1),开启指 ...
- 论文阅读笔记二十三:Learning to Segment Instances in Videos with Spatial Propagation Network(CVPR2017)
论文源址:https://arxiv.org/abs/1709.04609 摘要 该文提出了基于深度学习的实例分割框架,主要分为三步,(1)训练一个基于ResNet-101的通用模型,用于分割图像中的 ...
- ActiveSync之HTTP
Exchange ActiveSync:HTTP协议让客户端能够同步存储在服务器上的数据. 互联网工程工作小组(IETF)要求所有互联网协议都比支持UTF-8编码.因此,ActiveSync传输所使用 ...
- oa项目环境搭建的操作步骤详解
dto:多表关联查询用单独建一个类,把查询数据放dto即可 vo:是view的缩写.单独定义一个类
- H: Dave的组合数组(二分法)
Dave的组合数组 Time Limit: C/C++ 1 s Java/Python 3 s Memory Limit: 128 MB Accepted: 3 ...
- 矩阵乘法的运算量计算(华为OJ)
题目地址: https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b?tpId=37&&tqId=21293 ...
- Zabbix 3.2.6通过SNMP和iDRAC监控DELL服务器
https://www.cnblogs.com/saneri/p/7772641.html
- 自定义rem
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 牛客网round1
题解: 1. 二分答案之后判断 把式子移项使得x,y不关联 #include <bits/stdc++.h> using namespace std; #define rint regis ...