W806串口管脚复用

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

标题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串口复用代码

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值