STM32F103C8T6串口通信

这篇具有很好参考价值的文章主要介绍了STM32F103C8T6串口通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 文章来源地址https://www.toymoban.com/news/detail-597271.html

首先来看一下需要操作的函数,以及配置的步骤:

STM32F103C8T6串口通信

          图1 

STM32F103C8T6串口通信

                                                图2  

Code: usart.c

#include "usart.h"
void ustart_Init(void )
{
GPIO_InitTypeDef GPIO_Init_Ustar ; // 定义输出端口TX的结构体对象
USART_InitTypeDef USTART_Init; // 定义串口初始化结构体对象
NVIC_InitTypeDef NVIC_InitStructure; // 定义中断优先级组结构体对象
//配置中断优先级,以及中断的模式
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 ); //中断组选择器,也就是中断组的模式的配置,此处选择中断组2
NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn ; // 设置中断的模式,串口1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 1; //设置主优先级,首先比较主,如果主优先级相同,再进行比较子优先级,如果前面的两者都相同在比较中断号,具体可以参考图2
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; // 设置子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE ; //中断使能,也就是打开中断的意思
NVIC_Init(&NVIC_InitStructure); // 初始化中断寄存器结构体
/* 配置输出端口结构体配置及其初始化*/
RCC_APB2PeriphClockCmd( GPIO_USTAR_CLK , ENABLE ) ;// 打开GPIO时钟
GPIO_Init_Ustar.GPIO_Pin= GPIO_USTAR_TX_PIN ; // 设置输出端口
GPIO_Init_Ustar.GPIO_Speed=GPIO_Speed_50MHz; // 配置输出的速度
GPIO_Init_Ustar.GPIO_Mode= GPIO_Mode_AF_PP; // 设置串口模式,设置为推挽输出
GPIO_Init(GPIO_USTAR_PORT , & GPIO_Init_Ustar); // 初始化输出端口的结构体
/* 配置输入端口结构体配置及其初始化*/
GPIO_Init_Ustar.GPIO_Pin= GPIO_USTAR_RX_PIN ; // 设置输出端口
GPIO_Init_Ustar.GPIO_Mode=GPIO_Mode_IN_FLOATING; // 设置串口模式,设置为浮空输入
GPIO_Init(GPIO_USTAR_PORT , & GPIO_Init_Ustar); // 初始化输出端口的结构体
//配置串口初始化结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE ); // 打开串口时钟
USTART_Init.USART_BaudRate= USART_BaudRate1 ; //配置传输的波特率
USTART_Init.USART_HardwareFlowControl=USART_HardwareFlowControl_None ; //配置硬件流,通常采用无流的方式进行
USTART_Init.USART_Mode=USART_Mode_Rx|USART_Mode_Tx ; // 设置是否启用传输或者是接收模式,此处配置的是既可以接收,又可以发送
USTART_Init.USART_Parity=DISABLE; // 是否打开校验位,此处不进行校验
USTART_Init.USART_StopBits=USART_StopBits_1 ; //配置停止位
USTART_Init.USART_WordLength= USART_WordLength_8b ; // 配置长度
USART_Init(USART1,&USTART_Init); //通过定义的结构体初始化串口一

// 使能串口,注意串口进行了初始化需要进行使能,如果没有进行使能那么将无法进行使用
USART_Cmd(USART1,ENABLE );
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE) ; // 溢出中断标志,这里一旦打开,当发生溢出时候,将回去执行中断服务函数,否则将不会执行中断服务函数
/* 注意这里的中断函数在stm32启动文件中,不能自己随意为中断函数命名,需要自己去查找函数名称,进行编写是实现。注意函数名称在启动文件中,
一定不要自己随便取函数名,这样发生中断的时候,也不会执行,所以程序竟会陷入死循环,并且没有任何的现象*/


/*发送字符串的函数*/
}
void usart_TX_String(uint8_t *str){

while(*str!='\0') // 取出指针中的内容并进行判断
{
USART_SendData(USART1 ,*str); // 发送一个数据

while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); // 判断发送数据是否结束,也就是相当于51单片机中的TI发送结束标志位
str=str+1; // 注意这里的指针的偏移只是偏移一个字符的所占的空间的大小。所以不能使用str++,因为这样偏移的是一个指针整体的大小。

}
}

Code: usart.h

#ifndef _USART_H_
#define _USART_H_
#include "stm32f10x.h"
// GOPIO端口宏定义
#define GPIO_USTAR_PORT GPIOA // 定义寄存器
#define GPIO_USTAR_TX_PIN GPIO_Pin_9 // 定义输出端口
#define GPIO_USTAR_RX_PIN GPIO_Pin_10 // 定义输入端口
#define GPIO_USTAR_CLK RCC_APB2Periph_GPIOA // 定义GPIO端口时钟
//串口配置
#define USART_BaudRate1 9600 //设置串口的波特率
void ustart_Init(void ) ; // 串口初始化函数声明
void usart_TX_String(uint8_t *str); // 发送一个字符串的函数申明

//注意;这里不是变量的定义,这里是申明,使用的extern进行变量的申明,格式和定义的格式必须相同,只是多一个关键子extern
extern uint8_t Buf[200]; //定义一个八位的数组,每一个数组元素都是一个字节大小,数组的总长为200
extern uint16_t REC_STA; //用于接收计数,状态标志,这里是一个16位变量,最大位#0xFFFF
#endif

void SysTick_Handler(void)
{
}

STM32F103C8T6串口通信

判断数据发送是否完毕可以判断: TXE 、 TC 位都可以

判断数据是否接收到数据可以使用RXNE进行判断

Code: 中断处理函数:需要注意这里的函数名称不能自己随意命名:startup_stm32f10x_hd.s中查找对应的串口的函数名称。

 

void USART1_IRQHandler(void) {
uint8_t data=0; //接收数据临时变量
if( USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET)
{
data= USART_ReceiveData(USART1) ; //接收一个字节数据
USART_SendData(USART1,data);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
}

运行结果:

STM32F103C8T6串口通信

 

到了这里,关于STM32F103C8T6串口通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32F103C8T6的HC-06蓝牙通信

    如果朋友们 遇到了如下问题 ,可以仔细借鉴本文章和另一篇专门讲解 蓝牙通信问题 的文章,一定能够解决你在蓝牙通信时遇到的诸多困难 1.在调试蓝牙模块AT指令时无返回值 2.身边 无USB转TTL模块 可以直接调试蓝牙模块(本人就是由于无模块花了了整整一天才调试成功)

    2024年02月03日
    浏览(29)
  • STM32 F103C8T6学习笔记7:双机无线串口通信

    今日尝试配通俩个C8T6单片机之间的无线串口通信,文章提供原理,源码,测试效果图,测试工程下载: 目录 传输不规范问题: 串口通信资源: 单个串口资源理解: 单片机串口资源: 测试目标与测试硬件连接: 串口初始化与串口中断接收逻辑: 串口初始化: 初步测试能否

    2024年02月09日
    浏览(20)
  • 使用串口烧写程序到STM32F103C8T6最小板(CH340)

    商家没给ST‐LINK V2下载器,故使用串口将程序烧录到最小板,使用仿真软件Flymcu进行。(默认安装过CH340的驱动) 联机下载时的程序文件:编译生成的.hex文件; 编程前重装文件:当选中该项后,flymcu会在每次编程之前将Hex文件重新装载一遍,这对于代码调试的时候比较有用

    2024年02月01日
    浏览(20)
  • 学习记录之STM32F103C8T6最小系统板驱动MPU6050串口打印数据

    1.使用到的工具介绍 2.MPU6050和整体和简单介绍 3.程序的介绍 1.使用到的工具介绍 硬件方面:STM32F103C8T6最小系统板核心板,MPU6050模块三维角度传感器,经典的CH340烧写和串口作用,和若干个杜邦线。 软件方面:keil5编写程序软件,烧写软件FlyMcu.exe烧写工具,sscom.exe串口调试工

    2023年04月09日
    浏览(20)
  • AS608指纹模块与stm32f103c8t6通信实现指纹识别

    目录  AS608指纹模块  stm32f103c8t6最小系统板以及其他外设 工程资料 遇到的问题  光学指纹模块更好用一点,电容式指纹模块的通信协议有一点不一样。 网上可以搜到相关的串口通信协议用户手册 首先可以尝试通过usb转串口让AS608与电脑串口通信,看通信协议,用电脑串口发

    2024年01月18日
    浏览(19)
  • Qt实现安卓手机蓝牙通信并控制stm32f103c8t6驱动VFD屏

    Qt具有跨平台的特性所以非常适合写通信的demo,但是在这个例程中Qt蓝牙部分不支持Windows平台,安卓平台使用没问题。 Qt蓝牙主要涉及到三个类的使用: QBluetoothDeviceDiscoveryAgent //扫描周围蓝牙设备 QBluetoothLocalDevice //扫描本地蓝牙 QBluetoothSocket //建立蓝牙的socket读写 安卓不支

    2024年02月08日
    浏览(22)
  • 舵机控制(STM32F103C8T6)

            本文是以 STM32F103C8T6 作为主控芯片,通过PB6端口输出PWM,实现控制180°舵机。 (一)概述         舵机是一种位置伺服驱动器器,是一种带有输出轴的小装置。当我们向伺服器发送一个控制信号时,输出轴就可以转到特定的位置。只在控制信号持续不变,伺服机构就

    2023年04月09日
    浏览(19)
  • STM32F103C8T6板子介绍

    STM32简介 STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器 STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等 STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器。  STM32F103C8T6 F1XX片上资源

    2024年02月11日
    浏览(21)
  • 功耗测评 | STM32F103C8T6

    STM32F103C8T6 MCU越来越广泛的应用在生产生活的各个领域,外接丰富的传感器、功能模块、通信模块、显示存储等可以形成各种可样的产品项目应用。对于功耗要求比较高的产品,一般会选择STM32L系列的MCU,但是从功耗的评测角度,逻辑上是基本相似的。 在很多应用场合中都对

    2024年02月07日
    浏览(17)
  • STM32F103C8T6系统板

    1.电源部分 2.复位 3.晶振 4. 电源电路——防反接 有关二极管 漫谈二极管防电源反接电路 本次采用上图右下角的NMOS防反接电路。 电源电路——电源芯片 AMS1117是AMS公司的 ,LM1117是NS(美国国家半导体)的,LM1117要贵很多,所以一般的用AMS1117就可以了。 (以下分析参考STM32F10

    2024年02月02日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包