STM32入门学习之USART(STM32F030F4P6基于CooCox IDE)

发布者:xxoke624最新更新时间:2021-10-19 来源: eefocus关键字:STM32  USART  CooCox  IDE 手机看文章 扫描二维码
随时随地手机看文章

#include "stm32f0xx.h"

#include "stm32_lib/inc/stm32f0xx_rcc.h"

#include "stm32_lib/inc/stm32f0xx_gpio.h"

#include "stm32_lib/inc/stm32f0xx_usart.h"

 

int main(void)

{

//1、使能时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

//特别注意:因为串口有使用GPIO,所以对应GPIO的时钟也要使能

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

//2、选择引脚

//TX有PA2和PA9可选,RX有PA3和PA10可选

//GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);

//GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);//为什么是AF1,而不是AF0呢?见下图,数据手册才是准确的

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);

 

//3、引脚设置

GPIO_InitTypeDef PORT_UART1_TX;//定义TX脚,PORT_UART1_TX是自定义名称,可以任意

PORT_UART1_TX.GPIO_Pin=GPIO_Pin_9;//此参数根据上面选择的引脚来定

PORT_UART1_TX.GPIO_Speed=GPIO_Speed_10MHz;

PORT_UART1_TX.GPIO_Mode=GPIO_Mode_AF;

PORT_UART1_TX.GPIO_PuPd=GPIO_PuPd_NOPULL;

//IO初始化

//第一个参数是系统的GPIOA、GPIOB、GPIOC等

//第二个参数是&+上面自定义的名称PORT_UART1_TX

GPIO_Init(GPIOA,&PORT_UART1_TX);

 

GPIO_InitTypeDef PORT_UART1_RX;//定义RX脚

PORT_UART1_RX.GPIO_Pin=GPIO_Pin_10;//此参数根据上面选择的引脚来定

PORT_UART1_RX.GPIO_Speed=GPIO_Speed_10MHz;

PORT_UART1_RX.GPIO_Mode=GPIO_Mode_AF;

PORT_UART1_RX.GPIO_PuPd=GPIO_PuPd_NOPULL;

GPIO_Init(GPIOA,&PORT_UART1_RX);

 

//4、串口参数配置

USART_InitTypeDef MyUsart1;//这个MyUsart1是我自定义的,可以任意定义如XYZ123

MyUsart1.USART_BaudRate=115200;//设置波特率

MyUsart1.USART_WordLength=USART_WordLength_8b;//设置数据长度

MyUsart1.USART_Parity=USART_Parity_No;//设置奇偶校验

MyUsart1.USART_StopBits=USART_StopBits_1;//设置停止位

MyUsart1.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//设置流控制

MyUsart1.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//设置模式

//初始化

//第一个参数是系统的USART1、USART2、USART3等

//第二个参数就是&+上面自定义的量MyUsart1

USART_Init(USART1,&MyUsart1);

 

//5、使能

USART_Cmd(USART1,ENABLE);

//6、接收和发送,通过查询标志位

while(1){

while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)!=1);//等待接收

USART_ClearFlag(USART1,USART_FLAG_RXNE);//清楚接收完成标志位

USART_SendData(USART1,USART_ReceiveData(USART1));//接收什么,发送什么

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=1);//等待发送完成

USART_ClearFlag(USART1,USART_FLAG_TXE);//清楚发送完成标志位

}

}



关键字:STM32  USART  CooCox  IDE 引用地址:STM32入门学习之USART(STM32F030F4P6基于CooCox IDE)

上一篇:STM32入门学习之USART中断(STM32F030F4P6基于CooCox IDE)
下一篇:STM32的位带操作分析

推荐阅读最新更新时间:2024-11-10 11:27

STM32工程模板简单套用教程(Keil MDK)
在Mdk配置stm32工程是一件很麻烦的事情,故直接套用工程模板,减少时间花费。(此处用野火的m3工程模板) 模板的配置是根据相对路径的,所以模板可以随意复制到任意一个地方。 1.文件夹改名,这里我改为shuoGG_project,打开工程(在USER里),改改output名和文件名什么的,当然不改也没什么影响; 2.选型换一换,这个模板默认是stm32f103ve的; 3.个人习惯:把stm32f10x_conf.h和stm32f10x_it.h加到USER文件夹方便修改; 4.用串口烧写的记得勾上create hex; 5.在stm32f10x_conf.h注释掉用不到的外设,可以减少一点编译时
[单片机]
<font color='red'>STM32</font>工程模板简单套用教程(Keil MDK)
stm32USB设备的连接枚举过程
1) USB 的插入检测 当12脚短接,Q1截止,Q2导通,D+上拉,windows 就会认为 USB 接口有一个全速设备,马上复位总线,并开始枚举设备。 如果23脚短接,则 Q1状态取决于 USB-DISCONNECT(PD2)脚的状态。CPU 复位后,GPIO 引脚处于浮空输入状态。所以此时,Q1导通,Q2截止,主机检测不到设备。 在程序初始化了 USB 相关部分后,可以通过设置 PD2=0 低电平使 Q1截止, Q2导通。则 USB 检测到设备,开始枚举过程。 所以要控制开发板作为 USB 设备工作,必须23短接。 当12脚短接,Q1截止,Q2导通,D+上拉,windows 就会认为 USB 接口有一个全
[单片机]
stm32USB设备的连接枚举过程
STM32总线架构讲解
01前文 本文主要进行学习总结,为他人提供参考和学习,也为了记录自己的学习知识进行总结,并且望有错误之处,请各位技术大佬们提出修正,互相进步,也便认识自己的不足之处,查漏补缺。 02前情提要 在说总线架构之前,要了解一些知识点,AMBA是什么、总线、矩阵的作用,了解了这些才能明白总线为何这样走,为何要有矩阵。 1、AMBA AMBA是ARM公司提出的一种开放性的SoC总线标准,现在已经广泛的应用于RISC的内核上了。 定义了一种多总线系统,包括系统总线和等级稍低的外设总线。 利用AMBA定义的一款总线架构: AHB (Advanced High-performance Bus) 高级高性能总线 ASB (Advanced Sy
[单片机]
<font color='red'>STM32</font>总线架构讲解
基于ZigBee和STM32的室内智能照明系统的设计
随着生活水平的不断提高,人们对日常生活的无线化、网络化、智能化、节能化的需求越来越强烈,传统的照明控制系统已经无法满足人们对日常生活品质的需求。基于上述原因提出了一种基于ZigBee和STM32的室内智能照明系统的设计。 更多资讯,敬请关注大比特资讯http://www.big-bit.com/ 更多技术方案和互动,请访问大比特论坛http://bbs.big-bit.com 在人们的传统意识中,照明系统仅以照明为目的。传统的照明系统中主要的控制方式有手动控制方式和自动控制方式。其中手动控制方式简单、有效,但是过于依赖人工操作,并且控制相对分散,不能有效管理;自动控制方式主要是由时钟元件、光电元件或两者组合的方式来实现对照明设备的
[单片机]
基于ZigBee和<font color='red'>STM32</font>的室内智能照明系统的设计
基于Keil、STM32,用C++编写流水灯程序
通常来说,在单片机上编程,要么汇编,要么C语言,而用C++进行开发的很少,那么究竟能不能用C++开发单片机呢? 答案是肯定可以的,下面讲讲基于Keil、STM32,用C++编写流水灯程序的一些内容。 1、为什么很少用C++开发单片机 不知道大家对面向过程和面向对象的理解有多少? C语言面向过程的语言,C++是面向对象的编程语言。结合本文来说,面向过程相比面向对象的编程,代码量更小,运行效率更高。 所以,C语言相比C++具有更小代码量、更快的运行速度。 当然,这里是C相对C++而言。其实,汇编相对C而言,具有更小代码量和更快的运行速度。可以参看文章:用 汇编 和 C语言 写流水灯程序有什么不一样? 因为单片机的RAM和Flash资源
[单片机]
STM32开发笔记47:STM32F4+DP83848以太网通信指南系列(一)
单片机型号:STM32F407VGT 本章为系列指南第一章,主要是介绍一下项目思路,并且尽可能列出从零开始着手开发这个项目过程中,所需要理解的各类知识点,关于这些知识点,如果需要更详细的介绍,请列为看官自行百度谷歌。 STM32F407简介 STM32F407主频168MHz,主频这个数值的意义可以这么理解:每秒执行168,000,000步简单指令,也就是每毫秒168,000次,每微秒168次。我们工业以太网进入实时通信后的数据传输周期大概每2ms交互4次,每次60个Byte,最差的算法复杂度计算下来需要每毫秒4 / 2 * 60byte = 120步(事实上用不了这么多步),而这颗STM32F07的芯片提供每毫秒168,00
[单片机]
<font color='red'>STM32</font>开发笔记47:STM32F4+DP83848以太网通信指南系列(一)
STM32单片机的通用定时器
STM32中的定时器有多种,按功能分成2个高级控制器定时器,4个普通定时器,2个基本定时器,2个看门狗定时器,1个系统滴答定时器SysTick。 定时器的关键是定时时间的计算。比如用定时器控制继电器的开关的时候,需要延时一段时间才关闭或者开启,这时候离不开定时器定时。 通用定时器定时时间计算。1秒中断的基本实现: 通用定时器模块的入口时钟经过分频得到计数器的时钟,用CK_CNT表示,预分频器的系数为:TIMx_PSC,当TIMx_PSC=0时,表示不分频,=1时,2分频。以此类推。 公式为:CK_CNT=fclk_PSC/(PSC +1),其中PSC最大为65535. 其次是TIM5计数器的计数值的设置,TIM5计数器以
[单片机]
GPRS无线终端测试系统电路设计
基于高性能单片机STM32($20.3400)和GPRS无线通信方案实现了对测试点CMMB网络覆盖情况的实时监测,并利用GPS接收器将测试终端的地理位子信息上传到服务器端,完成了对监测终端的精准定位。终端板卡供电方式采用太阳能供电系统,保障其在无电源和人员看守的情况下长期稳定的工作。最后通过综合测试,能实现所有要求的功能,完全满足本次设计的要求。 系统分为测试终端和服务器端,服务器端只需要一台性能良好的个人计算机,而测试终端主要由以下几个模块构成:射频前端模块模块、功率测量与存储模块、GPS接收器、太阳能供电模块、处理器模块及GPRS无线通信模块。各个模块主要是通过STM32($20.3400)微处理器的GPIO口连接与通信。
[单片机]
GPRS无线终端测试系统电路设计

推荐帖子

有关evc的网络编程
我在windows下开发了一个网络聊天程序,想移植到wince下来程序用了CSocket类,在wince上运行后,发现程序不能收到任何socket信息上网查阅后,说是在wince下应该用CCeSocket。是不是只要用CCeSocket替换原程序中的CSocket类就可以了呢?有关evc的网络编程
icc007 嵌入式系统
无人机与反无人机:技术对抗的时代
随着科技的飞速发展,无人机和反无人机技术已经成为当今军事、民用和商业领域的热点话题。这些高科技设备在为人们带来便利的同时,也引发了一系列的技术、安全和伦理问题。本文将探讨无人机与反无人机技术的前沿动态,以及它们在技术对抗时代的影响和前景。一、无人机技术的发展无人机,也称为无人驾驶飞行器,是指一种不需要人类直接操控的飞行器。近年来,随着传感器、导航、控制等技术的进步,无人机的性能和应用领域得到了极大的拓展。无人机不仅可以用于军事侦察、打击,还可以用于民用领域的航拍、快递、救援等。同时,随
知语云智能科技 安防电子
如何使子窗口隐藏?
各位高手,小弟在一个主窗口上新建一个线程,然后在线程中创建了一个子窗口想让子窗口一创建,就隐藏而显示主窗口,而子窗口中的功能仍在执行功能。切为之奈何?谢谢如何使子窗口隐藏?非模态窗体,然后showwindow一下不就行了.最简单的方式在资源中将子窗口的显示属性设为隐藏呵呵
yang_0799 嵌入式系统
晒WEBENCH设计的过程+低通模拟滤波器设计
本帖最后由lonerzf于2014-8-1717:50编辑 最近正学习使用WEBENCH设计,发现滤波器设计是其中一个重要应用。今天就学习下低通模拟滤波器。参考文档www.eepw.com.cn/article/236357.htm查了资料之后,知道低通模拟滤波器的频域规范包括4个基础参数:1fc,即滤波器的–3dB截止频率;2Ao,即滤波器的增益;3Asb,即阻带衰减;4fs,即阻带衰减的中断频率.起始频率到截止频率(fc)的频率范围为带通
lonerzf 模拟与混合信号
更加智能:智能电池电量计如何有效改进动态血糖监视仪的电池使用寿命
人体血糖值的偏高或偏低都有可能导致严重的健康威胁,因此监测血糖水平是重中之重。目前全球已有1.5亿人口罹患糖尿病,所以个人便携型血糖监测仪(BGM)的需求巨大。图1所示的动态血糖监测仪(CGM),可帮助糖尿病患者实时检查血糖读数,也可在超长时间段内监测血糖值。CGM能够持续监测血糖水平,然后在用户血糖值达到危险值时提示用户。这款监测仪通常包含图2所示的传感器单元和图3所示的聚合器单元。图1:动态血糖监测仪(CGM)此传感器单元使用纽扣电池或硬币电池,在一定时间段内与人体连接(
alan000345 TI技术论坛
【优秀文章推荐】BOOST电源的计算
本帖最后由dontium于2015-1-2311:50编辑BOOST电源是开关电源中最常用的拓朴之一,它的主要器件的计算已有很多文章或书籍介绍,然而,注重从原理及计算上着手的文章、并且写得好,言简意赅的并不多。现推荐给大伙一篇好文章:【优秀文章推荐】BOOST电源的计算本帖最后由dontium于2015-1-2311:50编辑谢谢谢分享,收下了!
dontium 模拟与混合信号
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved