串口配置的寄存器被写成一个结构体的代码
来源:互联网 发布:惊天危机 知乎 编辑:程序博客网 时间:2024/05/17 08:22
typedef struct
{
uint32_t USART_BaudRate; //串口波特率
uint32_t USART_WordLength; //数据位宽
uint32_t USART_StopBits; //停止位宽
uint32_t USART_Parity; //效验位宽
uint32_t USART_Mode; //工作模式
uint32_t USART_HardwareFlowControl; //硬件流控制
} USART_InitTypeDef;
开发板与PC通信程序:
#include \"stm32f0xx.h\"
#include \"stdio.h\"
#define count(a) (sizeof(a)/sizeof(*(a)))
uint8_t Tx_Buffer[] = \"EEWORLD-[晒心得]STM32F03--USART实验\";
/*串口初始化配置 */
void USART_Config(void)
{
USART_InitTypeDef USART_InitStructure;
/*初始化USART1时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
USART_InitStructure.USART_BaudRate = 9600;//设置串口波特率
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//设置流控制
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;//设置工作模式
USART_InitStructure.USART_Parity = USART_Parity_No;//设置效验位
USART_InitStructure.USART_StopBits = USART_StopBits_1;//设置停止位
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//设置数据位
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);//使能串口 1
}
/*GPIOA初始化配置 */
void GPIOA_Config()
{
GPIO_InitTypeDef GPIO_InitStructure;
/*初始化GPIOA时钟*/
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);
/* 配置PA9 ,PA10*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //设置端口复用
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/*发送 1 字节数据*/
void UART_send_byte(uint8_t byte)
{
while(!((USART1->ISR)&(1<<7)));//等待发送完
USART1->TDR=byte; //发送一个字节
}
/*发送字符串*/
void UART_Send(uint8_t *Buffer, uint32_t Length)
{
while(Length != 0)
{
while(!((USART1->ISR)&(1<<7)));//等待发送完
USART1->TDR= *Buffer;
Buffer++;
Length--;
}
}
uint8_t UART_Recive(void)
{
while(!(USART1->ISR & (1<<5)));
return(USART1->RDR);
}
void Delay(uint32_t temp)
{
for(; temp!= 0; temp--);
}
int main(void)
{
GPIOA_Config();
USART_Config();
while(1)
{
UART_Send( Tx_Buffer, count(Tx_Buffer)-1);
//USART_SendData(USART1, 0xff);
Delay(500000);
}
}
阅读全文
0 0
- 串口配置的寄存器被写成一个结构体的代码
- kinetis的UART串口寄存器
- 段寄存器的结构
- 串口寄存器配置
- 最少代码写成的javascript menu tree
- 如何写成优雅的代码(格式篇)
- 一个串口接收数据的代码
- 一个串口操作的C++代码
- CPSR寄存器的配置
- ARM微处理器的寄存器结构
- 驱动你的串口 和寄存器打交道
- MT6572 的UART串口寄存器DATASHEET
- 串口数据的结构
- 串口的DCB结构
- 串口termios结构体的详细设置
- C++的程序也会写成没有效率的代码
- 怎么把一个结构体的数据包通过串口发送出去?
- 寄存器使用结构体进行空间地址的映射
- vue 使用Slot 分发内容
- 位图(BitMap)索引
- cocos-lua学习笔记(一)下载地址
- 227. Basic Calculator II
- File类
- 串口配置的寄存器被写成一个结构体的代码
- jquery一些实用功能
- Es5.x版本研究
- python第三方库使用
- OpenCV学习笔记
- Linux深入 -- day01 Linux介绍
- Mysql 常用统计语句
- 大数据24小时:京东金融发布首个FaaS企业服务云平台,蚂蚁金服研发眼纹识别“黑科技”
- 视频丨第四范式胡时伟:AI的商业化才刚刚开始