#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的位带操作分析
推荐阅读
史海拾趣
中国振华电子集团有限公司(简称振华)自成立之初,就致力于电子产品的研发与生产。初期,公司面临着技术落后、资金短缺等诸多困难,但创始人及团队凭借坚定的信念和不懈的努力,成功开发出了一系列具有市场竞争力的电子产品。随着产品质量的提升和市场份额的扩大,振华逐渐在电子行业中崭露头角。
为了进一步扩大业务范围和提升技术实力,Keil公司决定与美国德克萨斯州理查森的Keil Software Inc进行联合运营。这一举措不仅使公司得以接触更广阔的市场,还促进了双方在技术、产品和市场等方面的深度融合。联合运营后,Keil公司的发展速度明显加快,逐渐在嵌入式系统开发工具市场上占据了重要地位。
品质是API Delevan公司的生命线。公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司还注重持续改进,通过引入先进的生产设备和技术手段,不断提高生产效率和产品质量。这种对品质的执着追求使得API Delevan的产品在市场上具有很高的声誉。
长江连接器一直将研发实力和技术创新作为公司的核心竞争力。公司拥有一支高素质的研发团队,不断投入资源进行新技术和新产品的研发。通过引进先进的研发设备和技术手段,长江连接器成功研发出了一系列高品质、高性能的连接器产品,满足了市场的多样化需求。同时,公司还积极申请各类专利和知识产权,保护自己的技术成果。
请教大家: 我最近在调试cc1100,通了,但是必须在发送端延时30ms左右才能无误的接受(通过串口显示在PC上)。如果小于30ms的延时或则不延时就不能完整的接收数据。我测了一下,一次发送4字节需要40ms的时间。问题是收发之间的准备过程是怎样的啊, ...… 查看全部问答∨ |
这个东西连续读写的话一定要按页读写? 例如有一个uchar[8] 我从地址0x0d出开始写,那么uchar[3-7]会写到哪去? A:0x10-0x14 B:0x00-0x04 C:0x08-0x0b? 有精通这个的告诉我下啊,我这两天得到的惨痛教训是不一定选A… 查看全部问答∨ |
【求助】I2S中 _WrL3Data(0xf2,0);是什么意思? 本人比较小白 实在看不懂下面这段代码 希望大侠 能帮分析下~~~谢谢了~ 代码如下: _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00) _WrL3Data(0xc2,0);  ...… 查看全部问答∨ |
|
请问大家有没有DM642的SPRU610、629等的中文手册下载得到啊? 呵呵,看到很多人把TMS320DM642的芯片手册翻译了,恩,呵呵。我还是觉得看SPRU的这堆手册更细致点,因为现在时间比较紧,就想问问大家有没有他们的中文手册,这样子用起来会比较快。如果以后有时间我愿意跟大家一起翻译这些手册。 … 查看全部问答∨ |
|
ZwOpenFile与ZwCreateFile有什么关系? 我写一个驱动监控了所有的ZwCreateFile,一般的文件建立都可以拦截到,但一个应用的安装程序在安装文件时,却监控不到?不知道是何道理?难道它没有用zwcreatefile而用了zwopenfile?那么两个函数之间有何关 ...… 查看全部问答∨ |