历史上的今天
返回首页

历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2021年09月29日 | STM32入门学习之USART(STM32F030F4P6基于CooCox IDE)

2021-09-29 来源:eefocus

#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);//清楚发送完成标志位

}

}



推荐阅读

史海拾趣

Atlanta Micro公司的发展小趣事

随着技术的不断进步,Atlanta Micro不断推出创新产品,其中最为引人注目的是其开发的一款高性能RF模块。这款产品采用了先进的材料和技术,具有更高的频率稳定性、更低的噪声和更长的使用寿命。这一创新不仅提升了产品的性能,也满足了客户对更高品质产品的需求,进一步巩固了Atlanta Micro在市场上的地位。

GSR Technology Ltd公司的发展小趣事

随着技术的成熟和市场的认可,GSR Technology Ltd开始寻求国际合作机会,以进一步扩大其市场影响力。公司与欧洲一家知名雷达制造商达成战略合作,共同开发面向全球市场的先进GSR系统。这一合作不仅提升了公司的产品竞争力,还为公司打开了欧洲市场的大门。随后,公司逐步在北美、亚洲等地设立分支机构,实现了全球化布局。

CST Master Electronic Co Ltd公司的发展小趣事

随着市场的不断发展,CST Master意识到只有不断创新才能在激烈的竞争中立足。公司投入大量资源用于研发,积极探索新技术、新工艺和新材料。经过多次试验和失败,团队终于取得了一项重要的技术突破,推出了一款具有行业领先水平的新产品,赢得了客户的广泛认可。

Hitron公司的发展小趣事

在国内市场取得一定成绩后,CST Master决定进军国际市场。然而,国际市场的竞争更加激烈,法律法规和文化差异也给公司带来了不小的挑战。公司积极调整市场策略,加强与当地合作伙伴的合作,逐步打开了国际市场的大门。通过不断的努力,CST Master在国际市场上也取得了一定的份额。

Bytes公司的发展小趣事

随着市场规模的扩大,Bytes公司意识到供应链管理和成本控制的重要性。公司不断优化供应链结构,提高采购效率和质量,降低生产成本。同时,公司还通过精细化管理,降低运营成本,提高盈利能力。这些措施使得Bytes公司在激烈的市场竞争中保持了良好的财务状况。

高博(GBG)公司的发展小趣事

随着业务的不断拓展,谷峰公司开始实施全球化战略。公司在美国、欧洲、俄罗斯和东南亚等多个国家和地区设立了代表处和代理处,构建了覆盖全球的研发和销售网络。这一布局不仅使谷峰能够更快速地响应全球市场需求,还促进了其与国际知名企业的交流与合作,为公司的技术创新和产品升级提供了有力支持。

问答坊 | AI 解惑

高速模拟电路设计技术

高速模拟电路设计技术 看看就知道有不有用了!! 我觉得很可以的!!! …

查看全部问答>

请问超声波探头

现在学习需要一对超声波传感器,穿透约0.5cm宽度的液体并被检测到,请问什么样的超声波探头可以满足要求呢?谢谢!…

查看全部问答>

Functional.Verification.Coverage.Measurement.and.Analysis

Functional.Verification.Coverage.Measurement.and.Analysis…

查看全部问答>

想做蓝牙~~手头有CSR的BC4。。。想和BLUELAB去开发蓝牙

最近刚接触蓝牙。。。手头有一块CSR的BC4。。。想学习用CSR的 BLUELAB 去开发蓝牙。。。 现在用PSTool可以看到蓝牙固件里的信息,也可以修改波特率什么的。。。那并口应该就算是没问题了吧! 在BLUELAB里是不是可以通过并口跟蓝牙芯片连接。。。 ...…

查看全部问答>

关于kitl

发现wince有kitl的但是不知道怎么用 看网上的资料好像要加入代码 那我应该怎么加入kitl的代码 要是有直接支持kitl的bsp包就好了 我的平台是wince5.0 mini2440…

查看全部问答>

谁用过KEIL里的ISD51功能

我最近在琢磨ISD51功能,可是网上的资料有限,自己调试老是不通,我用的是STC的89C516RD+和飞利浦的89C51RD2兼容 KEIL里有个例子,我用的宏晶的下载板做实验,晶振18.432M,老提示我检查波特率,串口是否连接,可是我都侧过,没问题 DEBUG就是不 ...…

查看全部问答>

帮忙解释“用16位乘法指令完成32位无符号数乘法”的程序

看不懂“用16位乘法指令完成32位无符号数乘法”的程序,请路过的朋友能看得懂的帮忙解释每条指令所表达的含义。 ddata segment N1 db \'Please input a number:\',0dh,0ah,\'$\' N2 db \'Please input another number:\',0dh,0ah,\'$\' N3 d ...…

查看全部问答>

STM32USB主机写CBW

                                 现在主机发送CBW之后,往u盘写入数据时,设备会返回一个nak。我现在的解决方案是在发送完CBW之后,延时100ms,这样 ...…

查看全部问答>

转:C# 串口通信汇总

C#串口操作系列:http://blog.csdn.net/wuyazhe/article/category/695097 (精品,5个系列都有,感谢wuyazhe博主)两个完整例子:http://dldx.csdn.net/fd.php?i=35144030363803&s=210244c0411405405a6adaa4d8818c02http://bbs.csu.edu.cn/bbs/fo ...…

查看全部问答>

超级简单--电源设计入门工具---TI 的Webench

Webench Power Designer是Webench中最基础的设计工具,提供了创建电源或DC-DC转换器所需的全面设计和原型建立工具。WEBENCH电源设计工具让设计者在建立原型前解决开关电源供应器的设计问题,进而减少使用传统设计方法时的时间及麻烦。同时,WEBENCH ...…

查看全部问答>