STM32F407 系列文章 -UART-To-Wife(二)
目录
1.函数 rswife_init(uint32_t baudrate)
4.函数 atk_mw8266d_uart_init(uint32_t baudrate)
1.函数 rswife_init(uint32_t baudrate)
前言
要实现UART转Wife功能,需准备主要硬件模块,STM32F407开发板和ESP8266模块(淘宝上卖的很多)。
一、串口(UART)
我门常见UART串口有RS232、RS485、RS422、TTL等,它们的区别在于通信协议、电平标准不同,而我们选择的ESP8266模块所需要的串口类型刚好是TTL转Wife的,当然你的ESP8266模块也可以选择不一样的,只要在CPU芯片输出端加一个电平转换就行了。
CPU芯片输出的信号主要为TTL电平,这样我们就不需要转换直接连接到ESP8266模块上。
二、参数设置
1.函数 rswife_init(uint32_t baudrate)
主要完成8266硬件初始化、8266硬件复位和串口UART初始化功能,
代码如下(示例):
/**
* @brief wife串口初始化
* @param baudrate: TTL UART通讯波特率
* @retval 无
*/
void rswife_init(uint32_t baudrate)
{
atk_mw8266d_hw_init(); /* ATK-MW8266D硬件初始化 */
atk_mw8266d_hw_reset(); /* ATK-MW8266D硬件复位 */
atk_mw8266d_uart_init(baudrate); /* ATK-MW8266D UART初始化 */
}
2.函数 atk_mw8266d_hw_init()
完成8266相关引脚时钟使能,引脚输出模式设置,以及其它设置等等,代码如下(示例):
/* 引脚定义 */
#define ATK_MW8266D_RST_GPIO_PORT GPIOF
#define ATK_MW8266D_RST_GPIO_PIN GPIO_PIN_6
#define ATK_MW8266D_RST_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOF_CLK_ENABLE(); }while(0) /* PF口时钟使能 */
/**
* @brief ATK-MW8266D硬件初始化
* @param 无
* @retval 无
*/
void atk_mw8266d_hw_init(void)
{
GPIO_InitTypeDef gpio_init_struct;
ATK_MW8266D_RST_GPIO_CLK_ENABLE();
gpio_init_struct.Pin = ATK_MW8266D_RST_GPIO_PIN;
gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;
gpio_init_struct.Pull = GPIO_NOPULL;
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(ATK_MW8266D_RST_GPIO_PORT, &gpio_init_struct);
}
3.函数 atk_mw8266d_hw_reset()
完成8266硬件复位,实现硬件重启。对IO引脚先置低,在置高。代码如下(示例):
/* IO操作 */
#define ATK_MW8266D_RST(x) do{ x ? \
HAL_GPIO_WritePin(ATK_MW8266D_RST_GPIO_PORT, ATK_MW8266D_RST_GPIO_PIN, GPIO_PIN_SET) : \
HAL_GPIO_WritePin(ATK_MW8266D_RST_GPIO_PORT, ATK_MW8266D_RST_GPIO_PIN, GPIO_PIN_RESET); \
}while(0)
/**
* @brief ATK-MW8266D硬件复位 硬件重启
* @param 无
* @retval 无
*/
void atk_mw8266d_hw_reset(void)
{
ATK_MW8266D_RST(0);
delay_ms(100);
ATK_MW8266D_RST(1);
delay_ms(500);
}