当前位置: 首页 > news >正文

潮流设计网站360站长平台

潮流设计网站,360站长平台,便宜的做网站,wordpress 站群会员目录 一、配置串口打印(参考串口打印的文章) 二、CUBE_MX配置 三、KEIL5配置 1.打开dma.c文件(默认初始化DMA中断函数) 2.打开usart.c文件 3.打开main.c文件(储存器发送数据到外设串口) 4.打开main.c…

目录

一、配置串口打印(参考串口打印的文章)

二、CUBE_MX配置

三、KEIL5配置

1.打开dma.c文件(默认初始化DMA中断函数)

2.打开usart.c文件

3.打开main.c文件(储存器发送数据到外设串口)

4.打开main.c文件(外设串口将数据写入储存器)


一、配置串口打印(参考串口打印的文章)

二、CUBE_MX配置

1.选择USART1串口,配置为异步发送

2.在DMA Setting中add

   USART1_RX(串口到储存器)

   USART1_TX(存储器到串口)

3.配置优先级、传输数据的大小

4.生成代码

三、KEIL5配置

1.打开dma.c文件(默认初始化DMA中断函数)

void MX_DMA_Init(void)
{/* DMA controller clock enable */__HAL_RCC_DMA1_CLK_ENABLE();/* DMA interrupt init *//* DMA1_Channel4_IRQn interrupt configuration */HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);/* DMA1_Channel5_IRQn interrupt configuration */HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);}

2.打开usart.c文件

定义了句柄结构体

UART_HandleTypeDef huart1;
DMA_HandleTypeDef hdma_usart1_tx;
DMA_HandleTypeDef hdma_usart1_rx;

串口参数配置

void MX_USART1_UART_Init(void)
{/* USER CODE BEGIN USART1_Init 0 *//* USER CODE END USART1_Init 0 *//* USER CODE BEGIN USART1_Init 1 *//* USER CODE END USART1_Init 1 */huart1.Instance = USART1;huart1.Init.BaudRate = 115200;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&huart1) != HAL_OK){Error_Handler();}/* USER CODE BEGIN USART1_Init 2 *//* USER CODE END USART1_Init 2 */}

要手动增补初始化函数(不要忘记了)

HAL_UART_Init(&huart1);

上述代码配置了串口的传输速度和模式(可以通过软件配置),如图:

  初始化  USART1_RX(串口到储存器)、 USART1_TX(存储器到串口)

void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{GPIO_InitTypeDef GPIO_InitStruct = {0};if(uartHandle->Instance==USART1){/* USER CODE BEGIN USART1_MspInit 0 *//* USER CODE END USART1_MspInit 0 *//* USART1 clock enable */__HAL_RCC_USART1_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();/**USART1 GPIO ConfigurationPA9     ------> USART1_TXPA10     ------> USART1_RX*/GPIO_InitStruct.Pin = GPIO_PIN_9;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);GPIO_InitStruct.Pin = GPIO_PIN_10;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);/* USART1 DMA Init *//* USART1_RX Init */hdma_usart1_rx.Instance = DMA1_Channel5;hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;hdma_usart1_rx.Init.Mode = DMA_NORMAL;hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK){Error_Handler();}__HAL_LINKDMA(uartHandle,hdmarx,hdma_usart1_rx);/* USART1_TX Init */hdma_usart1_tx.Instance = DMA1_Channel4;hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;hdma_usart1_tx.Init.Mode = DMA_NORMAL;hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK){Error_Handler();}__HAL_LINKDMA(uartHandle,hdmatx,hdma_usart1_tx);/* USER CODE BEGIN USART1_MspInit 1 *//* USER CODE END USART1_MspInit 1 */}
}

要手动增补初始化函数(不要忘记了)

HAL_DMA_Init(&hdma_usart1_tx);
HAL_DMA_Init(&hdma_usart1_rx);


3.打开main.c文件(储存器发送数据到外设串口)

1.定义存储器1

#define SENDBUFF_SIZE  13
uint8_t SendBuff[SENDBUFF_SIZE];//储存器(给外设串口发送数据)

2.在主结构体存储数据

HAL_UART_Transmit_DMA函数中,储存器中只能使用     ‘’   (单个字符)

	  int i;for(i=0;i<SENDBUFF_SIZE;i=i+13){SendBuff[i]	 = 'M';SendBuff[i+1]	 = 'L';SendBuff[i+2]	 = 'S';SendBuff[i+3]	 = ' ';SendBuff[i+4]	 = 'L';SendBuff[i+5]	 = 'O';SendBuff[i+6]	 = 'V';SendBuff[i+7]	 = 'E';SendBuff[i+8]	 = ' ';SendBuff[i+9]	 = 'M';SendBuff[i+10] = 'X';SendBuff[i+11] = ' '; }	

3.配置串口打印(参考另一篇文章)

4.在main结构体中调用函数

HAL_UART_Transmit_DMA(&huart1, (uint8_t *)SendBuff ,SENDBUFF_SIZE);
//三个参数 1.USART句柄结构体 2.要发送数据的存储器 3.数据大小

5.打开串口调试助手

4.打开main.c文件(外设串口将数据写入储存器)

1.定义储存器2

#define SENDBUFF_SIZE  13
uint8_t ReceiveBuff[SENDBUFF_SIZE];

2.配置串口打印

3.在main结构体中调用函数

	HAL_UART_Receive_DMA(&huart1,(uint8_t *)ReceiveBuff,SENDBUFF_SIZE); 
//三个参数  1.串口的句柄结构体  2.要接收串口数据的存储器  3.数据大小

4.再调用函数把存储的数据再发送到串口中

HAL_UART_Transmit_DMA(&huart1, (uint8_t *)ReceiveBuff,SENDBUFF_SIZE);

5.打开串口助手,发送数据999,并回显

http://www.dt0577.cn/news/28444.html

相关文章:

  • 做公司官网需要什么条件优化网络培训
  • 网络营销的理论有哪些seo网站推广是什么
  • 西数网站助手百度竞价ocpc
  • 网页设计师常逛网站不付费免费网站
  • 做网站多少钱PageAdminseo内部优化方式包括
  • 豪华网站建设线上营销模式有哪些
  • 做写真图片网站合法吗中国万网域名注册免费
  • 现在哪些做进口商品的电商网站我是seo关键词
  • 网站icp证明关键词排名代做
  • 凡科免费建站新平台推广
  • 国际交流合作网站建设方案最基本的网站设计
  • wordpress仿站价格河北百度推广客服电话
  • 5g天天奭5g天天运动网站代码全网营销推广案例
  • 房产中介网站模板小红书关键词热度查询
  • 自己建设网站在哪里建设成都门户网站建设
  • 想让一个网站上线需要怎么做全国十大婚恋网站排名
  • 网页设计html代码大全brseo发包软件
  • 2019为赌博网站做代理被判缓刑谷歌浏览器手机版官网下载
  • 兰州中川国际机场电话windows7优化大师官方下载
  • 公司的网站建设价格百度竞价sem入门教程
  • 高校官方网站建设网络营销的四个步骤
  • 橙子建站收费标准下载百度官方网站
  • 做网站+广告费+步骤今日头条官网首页
  • 做招聘和求职都需要哪些网站百度山西授权代理
  • 建设网站公司宝鸡谷歌全球营销
  • 网站设计与开发培训外贸订单一般在哪个平台接?
  • 定州网站建设服装市场调研报告
  • 宽屏网页设计尺寸长沙排名优化公司
  • 网站建立的步骤苏州百度推广排名优化
  • 织梦网站模板官网南宁网站建设网络公司