W806串口管脚复用

news/2025/3/24 7:39:39/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

标题W806串口管脚复用

W806串口管脚复用
一、 目的:说明W806串口管脚复用的方法。
二、 用到的资料:1、硬件:W806开发板。2、软件:W806资料包->SDK_DEMO_参考例程。
三、 操作方法:
1、 打开参考例程:(1)、把WM_SDK_W806文件夹复制到非中文文件夹下;
(2)、找到WM_SDK_W806\tools\W806\projects\SDK_Project\project\CDK_WS\W806_SDK\W806_SDK.cdkproj双击用平头哥CDK打开。
如下图:
图1

删除src下的3个文件:main.c、wm_hal_msp.c、wm_it.c。
在src上右键,添加WM_SDK_W806\demo下的所有文件:
在这里插入图片描述

默认demo演示UART1的使用,查阅《W806 MCU芯片规格书_V2.0.pdf》,UART1没 有复用管脚,固定在PB6和PB7。下面以UART5为例说明管脚复用。
四、 增加代码:
1、 在main.c中增加:
(1)增加定义
UART_HandleTypeDef huart5;//增加
(2)增加函数
static void UART5_Init(void);//增加

static void UART5_Init(void)//增加
{
huart5.Instance = UART5;
huart5.Init.BaudRate = 115200;
huart5.Init.WordLength = UART_WORDLENGTH_8B;
huart5.Init.StopBits = UART_STOPBITS_1;
huart5.Init.Parity = UART_PARITY_NONE;
huart5.Init.Mode = UART_MODE_TX | UART_MODE_RX;
huart5.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart5.gState = HAL_UART_STATE_RESET;
if (HAL_UART_Init(&huart5) != HAL_OK)
{
Error_Handler();
}
}
(3)、在main函数增加:
UART5_Init();//增加
HAL_UART_Receive_IT(&huart5, buf, IT_LEN); //增加
(4)、
2、修改wm_hal_msp.c中的void HAL_UART_MspInit(UART_HandleTypeDef* huart)
增加:
else if(huart->Instance==UART5)
{
__HAL_RCC_UART5_CLK_ENABLE();
__HAL_RCC_GPIO_CLK_ENABLE();

	// PB18: UART5_TX// PB17: UART5_RX__HAL_AFIO_REMAP_UART5_TX(GPIOB,GPIO_PIN_18);__HAL_AFIO_REMAP_UART5_RX(GPIOB,GPIO_PIN_17);HAL_NVIC_SetPriority(UART2_5_IRQn,0);HAL_NVIC_EnableIRQ(UART2_5_IRQn);}

编译会发现一个错误:
在这里插入图片描述

把GPIO_PIN_08修改为GPIO_PIN_8,编译通过。
3、在wm_it.c中增加:
extern UART_HandleTypeDef huart5;//增加__attribute__((isr)) void UART2_5_IRQHandler(void)//增加
{
HAL_UART_IRQHandler(&huart5);
}
4、在wm_it.h中增加:
void UART2_5_IRQHandler(void);//增加
5、修改main.c中的void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)为:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->InstanceUART1)
{
if (FifoSpaceLen() >= huart->RxXferCount)
{
FifoWrite(huart->pRxBuffPtr, huart->RxXferCount);
}
}
else if(huart->Instance
UART5)//增加
{
if (FifoSpaceLen() >= huart->RxXferCount)
{
FifoWrite(huart->pRxBuffPtr, huart->RxXferCount);
}
printf(“haurt5\r\n”);
}

}
6、在main函数中增加
HAL_UART_Transmit(&huart5, tx_buf, tx_len, 1000);//增加
五、 编译测试:
在PB18\PB17连接USB转串口,打开串口调试助手进行测试,发送数据后,返回所发送数据。
六、 总结:
__HAL_AFIO_REMAP_UART5_TX宏位于wm_gpio_ex.h中,其它管脚复用宏也在此文件中。
七、完整代码和W806规格书附后。
W806串口复用代码


http://www.ppmy.cn/news/153612.html

相关文章

创维E900V21E/E900V22E_S905L3B/S905L2B通刷_支持5621DS无线_完美语音线刷固件

创维E900V21E/E900V22E_S905L3B/S905L2B通刷_支持5621DS无线_完美语音线刷固件 固件特点: 1、修改dns,三网通用; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、无开机广告,无系统更新,不在被强制升级…

魔百和CM311-1a_CH_S905L3A_安卓9.0_纯净线刷固件包

CM311-1a_CH_S905L3A_安卓9.0_纯净线刷固件包 固件特点: 1、修改dns,三网通用; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、无开机广告,无系统更新,不在被强制升级; 4、大量精简内置的…

魔百盒CM311-1_S905L3_2+16G_线刷固件包(可救砖)

魔百合CM311-1_S905L3_216G_先刷固件包(可救砖) 特点: 1、适用于CM311-1线-刷; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件&#xff0…

湖北移动HG680-LV_S905L3B_线刷固件包

湖北移动HG680-LV_S905L3B_先刷固件包 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件,运行速度提升&#x…

天宇手机“天语W68”刷机相关,仅供参考

网络上已经有一些介绍“天语W68”的刷机教程了,今天写这篇文章主要是为了记录一下整个刷机的详细过程,因为之前曾经成功刷过一次机(折腾了好长时间),这次再重刷又耗费了很长时间,连自己都觉得不可思议&…

【cfeng work】WorkProj中Stream流的应用详细介绍

WorkProj 内容管理 Stream中间操作 (流不会关闭)filter(x -> x boolean表达式) 筛选返回值为true的distinct() 去重limit(X) 返回前x个元素skip(x) 跳过流中元素map(x操作) 对每一个元素映射操作mapToInt() 将对象流转为数值流 Integer --> intflatMap(x操作) 将一个流中…

Spring Cloud Alibaba - Nacos源码分析

目录 一、源码 1、为什么要分析源码 2、看源码的方法 二、Nacos服务注册与发现源码剖析 1、Nacos核心功能点 2、Nacos服务端/客户端原理 2.1、nacos-example 2.2、Nacos-Client测试类 3、项目中实例客户端注册 一、源码 1、为什么要分析源码 1. 提升技术功底&#x…

UsonixR8系列--无线掌上超声技术指标

UR8 掌上超声系列具备下述特性。 扫描方式:电子扫描 成像模式: B 发射频率:凸阵 2.5MHz~4.0MHz 线阵 6MHz~8MHz 测 量:距离、面积、周长 探测深度:线阵: 20mm~60mm, 凸阵: 80mm~220m…