问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

...懂的不多,在坐串口通讯时,gpio,rcc,usart都配置好了,main函数我写的...

提问网友 发布时间:2024-04-25 21:42
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
2个回答
热心网友 回答时间:2024-04-27 18:27
我是用函数库实现的。基本系统时钟,复用时钟,串口时钟都给了,一般不会出错。下面是我的main()函数
int main(void)
{

RCC_Configuration();
GPIO_Configuration();
USART1_Configuration();
NVIC_Configuration();
/*********字符串输出**********/
USART_SendData(USART1,'a');
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){};
USART_SendData(USART1,'\r');
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){};
USART_SendData(USART1,'\n');
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){};
USART_SendData(USART1,'z');
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){};
for(i=0;TxBuf1[i]!='\0'; i++){
USART_SendData(USART1,TxBuf1[i]);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){};
}
}
只是简单的发送字符。
接收数据的话,库函数里用的是
RxData = USART_ReceiveData(USART2);就可以实现了
有什么不懂的还可以再问我。

设置中断向量
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

/* Enable the USART1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
在中断处理函数里收数据就可以
热心网友 回答时间:2024-04-27 18:32
#include "stm32f10x.h"
#include <stdio.h>
void COM1_Init( void)
{

GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //开启串口时钟

USART_InitStructure.USART_BaudRate = 115200; //波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位
USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止位
USART_InitStructure.USART_Parity = USART_Parity_No; //奇偶校验
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //模式
//将写好数值的结构体传递给库初始化串口函数,便于给相应寄存器赋值
USART_Init(USART1, &USART_InitStructure);
//配置串口TX作为推挽复用端口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

//配置串口RX作为悬空输入端口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);

//使能串口
USART_Cmd(USART1, ENABLE);
}
int i;
char rx_data[50]="顾利军本科就读于于中南民族大学";
int main(void)
{
//初始化系统,包括选择系统时钟频率。
SystemInit();
//初始化串口
COM1_Init();
while(rx_data[i]!='\0')
{USART_SendData(USART1, rx_data[i]);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}
i++;
}
}

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

修改未满一年怎么修改 未满一年怎么改第二次 未满一年怎么改第二次 ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 未满一年怎么改第二次 怎么在一年内修改两次 为什么我一走路,腿就疼? 番茄炖牛腱子做法大全 想买1克拉钻戒,大概多少钱? 未满一年改二次方法 Windows系统如何使用重庆大学 手把手教你用学校网络下载资源 上海第一台庞蒂亚克火鸟车主 沪AZ牌庞蒂亚克要多少钱 怎么在一年内修改两次 您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... 未满一年可以强制改吗? 未满一年可以强制改吗? 未满一年可以强制改吗 未满一年可以强制改吗 怎么一年改两次 战双帕弥什如何获取大量且提升被动操作技巧 一年内强制改二次方法 一年内怎么改第二次 您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... 不满一年如何更改? 十八小高层第八层是扬灰层吗? 怎么在一年内修改两次 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 怎么在一年内修改两次 修改没到一年怎么改? 战双帕弥什获取攻略战双帕弥什怎么获得 改错了未满一年怎么改回来 我买楼房总的18层几层的好 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 改错了未满一年怎么改回来 粽子放什么调料更香?不同口味不同选择! 一年内第二次强制修改 粽子馅怎么做粽子最好吃的6种馅料做法分享 修改未满一年怎么修改 ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 一年改2次的办法
Top