主函数请直接关注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发送数据的更多相关文章

  1. STM32的USART发送数据时如何使用TXE和TC标志

    在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器,另一个是程序看不到的移位寄存器,对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束. ...

  2. 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 ...

  3. STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT

    STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) http://home.eeworld.com.cn/my/space-uid-338727-blogid-47 ...

  4. STM32串口USART的使用方法和程序

    通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准NR 异步串行数据格式的外部设备之间进行全双工数据交换. USART利用分数波特率发生器提供宽范围的波特率选择,支持同步单向通信和半 ...

  5. stm32串口USART 硬件流控 --学习笔记

    流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即&qu ...

  6. C#串口通信发送数据

    1 发送数据 需要2个串口 http://www.openedv.com/thread-228847-1-1.html 下载源文件 File_Protocol_Test.rar

  7. STM32 串口USART DMA方式发送接收数据

    硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 头文件 USART3_DR的地址 DMA的通道 DMA的中断 USART接收回调函数 头 ...

  8. STM32串口DMA接收数据错位——暴力解决方法

    背景:两片STM32通过串口通信,为了减小CPU负担,采用DMA进行通信,发送端为STM32F103C8T6,接收端为STM32F407VET6.在调试的过程中发现,一直出现数据错位的问题,接收端尝试 ...

  9. 为何串口dma发送数据可能不完整

    串口dma数据发送不完整, 1. 通过打印log说明数据合成,送给dma buff都是正常的. 2. 数据通过硬件串口直接配置,是正常的 3. 数据通过单片机dma转发后数据异常,通过检查发现 dma ...

随机推荐

  1. 饮冰三年-人工智能-Python-17Python基础之模块与包

    一.模块(modue) 简单理解一个.py文件就称之为一个模块. 1.1 模块种类: python标准库 第三方模板 应用程序自定义模块(尽量不要与内置函数重名) 1.2 模块导入方法 # impor ...

  2. Java接口自动化测试之Maven项目的创建(一)

    这里使用Idea创建Maven项目, 过程非常简单, 装好JDK和Idea 1. 安装完后,打开Idea, 选择File→New→Project, 如图 2. 选择maven, 点击Next, 如图 ...

  3. IDEA新建模块

  4. 让Mysql支持Emoji表情,解决[Err] 1366 - Incorrect string value: '\xF0\xA3\x84\x83'

    mysql insert内容包含表情或者unicode码时候,插入Mysql时失败了,报如下异常: java.sql.SQLException: Incorrect string value: '\x ...

  5. 使用python调用wps v9转换office文件到pdf

    #!/usr/bin/python2.6 # -*- coding: utf-8 -*- # pip install timeout-decorator import os import win32c ...

  6. 【bzoj4887】[Tjoi2017]可乐 矩阵乘法

    题解: 比较简单的一道题目 如果会倍增floyd这个就很显然的 每次转移看成乘上一个矩阵 另外自爆等同于连到一个特殊点,特殊点只能走自己 停留就是增加自环

  7. 如何查找物理cpu,cpu核心和逻辑cpu的数量

    环境 Red Hat Enterprise Linux 4 Red Hat Enterprise Linux 5 Red Hat Enterprise Linux 6 Red Hat Enterpri ...

  8. tomcat优化,java查看

    java堆空间分为  新生代 ,老年代 , 持久代 各自有各自的垃圾回收算法 eden区:新生的对象存放在这经常被回收 from  .to  存活区 在老年代,回收的频率不是很高 jdk8 就没有持久 ...

  9. jQuery懒加载插件 – jquery.lazyload.js简单调用

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  10. Codeforces Round #487 (Div. 2) 跌分有感

    又掉分了 这次的笑话多了. 首先,由于CF昨天的比赛太早了,忘记了有个ER,比赛开始半个小时才发现. 于是只能今天了. 嗯哈. 今天这场也算挺早的. 嗯嗯,首先打开A题. 草草看了一遍题意,以为不是自 ...