#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中断(STM32F030F4P6基于CooCox IDE)
下一篇:STM32的位带操作分析
推荐阅读最新更新时间:2024-11-10 11:27
推荐帖子
- 有关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 模拟与混合信号
设计资源 培训 开发板 精华推荐
- ADA4075-2ACPZ-RL 平衡线路接收器运算放大器的典型应用电路
- LDK120M32R 3.2V低压降稳压器典型应用(可调版)电路
- AS5600 编码器
- LTC6261IS6 230 uA 电源电流运算放大器的典型应用
- FTS_SPD_1.9.2
- EVL6566A-75WADP,使用 L6563 和 L6566A 19V - 75W 笔记本电脑适配器的评估板,带有跟踪升压 PFC 预调节器
- 具有基本抑制功能的 LF60CDT-TR 6V 极低压降稳压器的典型应用
- 【未验证】 PCIEX16分叉拆分X8X8
- EVALLEDICL5101E1,使用 ICL5101 LED 驱动器的 110 W/54 V 电源演示系统
- 使用 Diodes Incorporated 的 ZR78L085 的参考设计