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 ...
随机推荐
- easyui 布局之window和panel一起使用时,拉动window宽高时panel不跟随一起变化
项目开发中布局是每一个组件都由最外层的window和内部的至少一个panel组成,其他的细小组件再依次放到panel中. 问题:当拉动外部的window时我们希望内部的panel的宽高也跟着变化,但是 ...
- 向github上提交自己的project
参考博客:https://blog.csdn.net/m0_37725003/article/details/80904824 step I: 创建自己的github账户(username:fourm ...
- Command 'ifconfig' not found, but can be installed with: sudo apt install net-tools
然后按照错误信息安安装网络工具: sudo apt install net-tools shl@shl-tx:~$ sudo apt install net-tools正在读取软件包列表... 完成正 ...
- Python初探list
今天要说一个新概念--list,中文可以翻译成列表,是用来处理一组有序项目的数据结构.想象一下你的购物清单.待办工作.手机通讯录等等,它们都可以看作是一个列表.说它是新概念也不算确切,因为我们之前已经 ...
- HDU 1695 GCD (莫比乌斯反演模板)
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- Java享元模式
定义:提供了减少对象数量从而改善应用所需的对象结构的方式 运用共享技术有效支持大量细微度的对象 类型:结构型 应用场景:系统底层的开发啊,以便解决系统的性能问题 系统有大量的相似对象,需要缓存池的场景 ...
- SQL Server常见的操作符
常见的操作符:Sort.Hash Match(聚合).Filter.Compute Scalar等 一:Sort select Shelf from Production.ProductInvento ...
- Linux(centos)系统各个目录的作用详解 推荐
文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码.SHELL脚本.二进制的可执行文件等,可用cat ...
- 拒绝频繁IP访问--转载
//首先我们要实现 IHttpModule接口 using System; using System.Collections.Generic; using System.Text; using Sys ...
- plsql的汉化问题
1:汉化工具下载地址:https://www.allroundautomations.com/bodyplsqldevreg.html 汉化吗.然后选择chinese就行了: 2:对安装(解压缩好的哦 ...