历史上的今天
今天是: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);//清楚发送完成标志位
}
}
史海拾趣
|
Functional.Verification.Coverage.Measurement.and.Analysis Functional.Verification.Coverage.Measurement.and.Analysis… 查看全部问答> |
|
想做蓝牙~~手头有CSR的BC4。。。想和BLUELAB去开发蓝牙 最近刚接触蓝牙。。。手头有一块CSR的BC4。。。想学习用CSR的 BLUELAB 去开发蓝牙。。。 现在用PSTool可以看到蓝牙固件里的信息,也可以修改波特率什么的。。。那并口应该就算是没问题了吧! 在BLUELAB里是不是可以通过并口跟蓝牙芯片连接。。。 ...… 查看全部问答> |
|
我最近在琢磨ISD51功能,可是网上的资料有限,自己调试老是不通,我用的是STC的89C516RD+和飞利浦的89C51RD2兼容 KEIL里有个例子,我用的宏晶的下载板做实验,晶振18.432M,老提示我检查波特率,串口是否连接,可是我都侧过,没问题 DEBUG就是不 ...… 查看全部问答> |
|
看不懂“用16位乘法指令完成32位无符号数乘法”的程序,请路过的朋友能看得懂的帮忙解释每条指令所表达的含义。 ddata segment N1 db \'Please input a number:\',0dh,0ah,\'$\' N2 db \'Please input another number:\',0dh,0ah,\'$\' N3 d ...… 查看全部问答> |
|
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 ...… 查看全部问答> |
|
Webench Power Designer是Webench中最基础的设计工具,提供了创建电源或DC-DC转换器所需的全面设计和原型建立工具。WEBENCH电源设计工具让设计者在建立原型前解决开关电源供应器的设计问题,进而减少使用传统设计方法时的时间及麻烦。同时,WEBENCH ...… 查看全部问答> |






