硬汉嵌入式论坛

 找回密码
 立即注册
查看: 850|回复: 9
收起左侧

[STM32H7] 不同例程下esp8266的bsp文件内容区别问题

[复制链接]

4

主题

18

回帖

30

积分

新手上路

QM

积分
30
QQ
发表于 2024-10-11 21:31:11 | 显示全部楼层 |阅读模式
V7板子,上面的是esp8266的例程,下面是FreeRTOS + LwIP的工程模板

代码搬来搬去的时候发现有报错,发现函数定义以及bsp_uart_esp8266.c的文件内容存在一定区别,是bug还是就是这么写的?
两份都是19年的文件工程,一个年中一个年末
14a09909-d7c7-40ad-90f4-4341b0d3e66c.png
回复

使用道具 举报

4

主题

18

回帖

30

积分

新手上路

QM

积分
30
QQ
 楼主| 发表于 2024-10-11 23:27:07 | 显示全部楼层
还是说单纯的是版本更新
回复

使用道具 举报

4

主题

18

回帖

30

积分

新手上路

QM

积分
30
QQ
 楼主| 发表于 2024-10-12 00:53:49 | 显示全部楼层
hal库版本也各有区别,改改删删,最后程序改完错报hardfault,调试单步跑来跑去不知道怎么解决
求解题思路
QQ20241012-005121.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-10-12 08:39:30 | 显示全部楼层
使用这个里面的驱动,这个是8266的最终版

注意,这个驱动仅支持我们淘宝买的那个模组,因为8266的固件有几万种,各式各样的,没法兼容。我们的驱动仅支持了这一种

https://www.armbbs.cn/forum.php?mod=viewthread&tid=94547

V7-204_Matlab的WIFI通信实现.rar (9.77MB)


回复

使用道具 举报

4

主题

18

回帖

30

积分

新手上路

QM

积分
30
QQ
 楼主| 发表于 2024-10-12 09:05:31 | 显示全部楼层
OK,谢谢硬汉哥
回复

使用道具 举报

4

主题

18

回帖

30

积分

新手上路

QM

积分
30
QQ
 楼主| 发表于 2024-10-12 16:38:50 | 显示全部楼层
void ESP8266_PowerOn(void)
{
        /* WIFI模块上电时,会以74880波特率打印如下信息:
                 ets Jan  8 2013,rst cause:1, boot mode3,6)

                load 0x40100000, len 25052, room 16
                tail 12
                chksum 0x0b
                ho 0 tail 12 room 4
                load 0x3ffe8000, len 3312, room 12
                tail 4
                chksum 0x53
                load 0x3ffe8cf0, len 6576, room 4
                tail 12
                chksum 0x0d
                csum 0x0d            <-----  程序识别 csum 后,再自动切换到正常波特率
        */

        ESP_CH_PD_0();

        comSetBaud(COM_ESP8266, 74880);        /* 设置端口波特率为 74880 */

        ESP_CH_PD_1();

        ESP8266_Reset();

        /* 等待模块完成上电,超时500ms 自动退出 */
        ESP8266_WaitResponse("csum", 1000);        /* 先等待 csum */
        ESP8266_WaitResponse("\n", 1000);        /* 再等待回车换行字符结束 */

        comSetBaud(COM_ESP8266,115200);        /* 1表示硬件流控CRS RTS有效;  0表示无需硬件流控 */

        /* 等待模块完成上电,判断是否接收到 ready */
        ESP8266_WaitResponse("ready", 5000);
       
        // ESP8266_SendAT("AT+RST");
        // ESP8266_WaitResponse("ready", 5000);
} rtos中调用有很大的区别吗,裸机power on有这些信息打印,可以正常启动,但塞进freertos后一直无法正常启动。串口提示按KAY3,但按动无蓝色信号灯反馈。用的是淘宝店的esp8266模块。
void bsp_Init(void)
{
        bsp_InitDWT();      /* 初始化DWT时钟周期计数器 */      
        bsp_InitKey();            /* 按键初始化,要放在滴答定时器之前,因为按钮检测是通过滴答定时器扫描 */
        bsp_InitUart();                /* 初始化串口 */
        bsp_InitExtIO();        /* 初始化FMC总线74HC574扩展IO. 必须在 bsp_InitLed()前执行 */       
        bsp_InitLed();            /* 初始化LED */       
        bsp_InitTimer();          /* 初始化滴答定时器 */
        bsp_InitExtSDRAM(); /* 初始化SDRAM */
       
        bsp_InitI2C();                /* 初始化I2C总线 */
        TOUCH_InitHard();   /* 初始化触摸芯片,LCD面板型号的检查也在此函数,所以要在函数LCD_InitHard前调用 */
        LCD_InitHard();     /* 初始化LCD */
        bsp_InitESP8266();        /* 配置ESP8266模块相关的资源 考虑前后覆盖问题,但之前好像测过*/
}bsp配置
static void MPU_Config( void )
{
        MPU_Region_InitTypeDef MPU_InitStruct;

        /* 禁止 MPU */
        HAL_MPU_Disable();
       
#if 1
    /* 配置AXI SRAM的MPU属性为Write through, read allocate,no write allocate */
        MPU_InitStruct.Enable           = MPU_REGION_ENABLE;
        MPU_InitStruct.BaseAddress      = 0x24000000;
        MPU_InitStruct.Size             = MPU_REGION_SIZE_512KB;
        MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
        MPU_InitStruct.IsBufferable     = MPU_ACCESS_NOT_BUFFERABLE;
        MPU_InitStruct.IsCacheable      = MPU_ACCESS_CACHEABLE;
        MPU_InitStruct.IsShareable      = MPU_ACCESS_NOT_SHAREABLE;
        MPU_InitStruct.Number           = MPU_REGION_NUMBER0;
        MPU_InitStruct.TypeExtField     = MPU_TEX_LEVEL0;
        MPU_InitStruct.SubRegionDisable = 0x00;
        MPU_InitStruct.DisableExec      = MPU_INSTRUCTION_ACCESS_ENABLE;
#else
                /* 配置AXI SRAM的MPU属性为Write back, Read allocate,Write allocate */
        MPU_InitStruct.Enable           = MPU_REGION_ENABLE;
        MPU_InitStruct.BaseAddress      = 0x24000000;
        MPU_InitStruct.Size             = MPU_REGION_SIZE_512KB;
        MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
        MPU_InitStruct.IsBufferable     = MPU_ACCESS_BUFFERABLE;
        MPU_InitStruct.IsCacheable      = MPU_ACCESS_CACHEABLE;
        MPU_InitStruct.IsShareable      = MPU_ACCESS_NOT_SHAREABLE;
        MPU_InitStruct.Number           = MPU_REGION_NUMBER0;
        MPU_InitStruct.TypeExtField     = MPU_TEX_LEVEL1;
        MPU_InitStruct.SubRegionDisable = 0x00;
        MPU_InitStruct.DisableExec      = MPU_INSTRUCTION_ACCESS_ENABLE;
#endif       
        HAL_MPU_ConfigRegion(&MPU_InitStruct);
       
       
        /* 配置FMC扩展IO的MPU属性为Device或者Strongly Ordered */
        MPU_InitStruct.Enable           = MPU_REGION_ENABLE;
        MPU_InitStruct.BaseAddress      = 0x60000000;
        MPU_InitStruct.Size             = ARM_MPU_REGION_SIZE_64KB;       
        MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
        MPU_InitStruct.IsBufferable     = MPU_ACCESS_BUFFERABLE;
        MPU_InitStruct.IsCacheable      = MPU_ACCESS_NOT_CACHEABLE;        /* 不能用MPU_ACCESS_CACHEABLE;会出现2次CS、WE信号 */
        MPU_InitStruct.IsShareable      = MPU_ACCESS_NOT_SHAREABLE;
        MPU_InitStruct.Number           = MPU_REGION_NUMBER1;
        MPU_InitStruct.TypeExtField     = MPU_TEX_LEVEL0;
        MPU_InitStruct.SubRegionDisable = 0x00;
        MPU_InitStruct.DisableExec      = MPU_INSTRUCTION_ACCESS_ENABLE;
       
        HAL_MPU_ConfigRegion(&MPU_InitStruct);
       
       
    /* 配置SDRAM的MPU属性为Write through, read allocate,no write allocate */
        MPU_InitStruct.Enable           = MPU_REGION_ENABLE;
        MPU_InitStruct.BaseAddress      = 0xC0000000;
        MPU_InitStruct.Size             = MPU_REGION_SIZE_32MB;
        MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
        MPU_InitStruct.IsBufferable     = MPU_ACCESS_NOT_BUFFERABLE;
        MPU_InitStruct.IsCacheable      = MPU_ACCESS_CACHEABLE;
        MPU_InitStruct.IsShareable      = MPU_ACCESS_NOT_SHAREABLE;
        MPU_InitStruct.Number           = MPU_REGION_NUMBER2;
        MPU_InitStruct.TypeExtField     = MPU_TEX_LEVEL0;
        MPU_InitStruct.SubRegionDisable = 0x00;
        MPU_InitStruct.DisableExec      = MPU_INSTRUCTION_ACCESS_ENABLE;

        HAL_MPU_ConfigRegion(&MPU_InitStruct);
       
       
        /* 配置以太网收发描述符部分为Device */
        MPU_InitStruct.Enable = MPU_REGION_ENABLE;
        MPU_InitStruct.BaseAddress = 0x30040000;
        MPU_InitStruct.Size = MPU_REGION_SIZE_256B;
        MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
        MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;
        MPU_InitStruct.IsCacheable  = MPU_ACCESS_NOT_CACHEABLE;
        MPU_InitStruct.IsShareable  = MPU_ACCESS_SHAREABLE;
        MPU_InitStruct.Number = MPU_REGION_NUMBER3;
        MPU_InitStruct.SubRegionDisable = 0x0;
        MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
        MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;

        HAL_MPU_ConfigRegion(&MPU_InitStruct);

        /*使能 MPU */
        HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}
mpu配置

const osThreadAttr_t ThreadESP8266_Attr =
{
        .name = "osRtxESP8266Thread",
        .attr_bits = osThreadDetached,
        .priority = osPriorityNormal3,
        .stack_size = 2048,
};
任务参数

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-10-13 00:23:03 | 显示全部楼层
qingming2333 发表于 2024-10-12 16:38
void ESP8266_PowerOn(void)
{
        /* WIFI模块上电时,会以74880波特率打印如下信息:

看下bsp_uart_fifo.h文件,是不是相关的串口没有开启。
回复

使用道具 举报

4

主题

18

回帖

30

积分

新手上路

QM

积分
30
QQ
 楼主| 发表于 2024-10-16 23:20:47 | 显示全部楼层
是的,没开,之后改了改,能有交互,但是又有新的问题出现。
ESP8266_JoinAP会由于返回值不为1显示fail,但是模块同样会返回wifi connected got it,之后一连接tcp server就会报hardfault,尝试过增加任务栈和堆大小,也尝试过暂时挂起所有任务,执行完ESP8266_LinkTCPServer再resume,未能解决问题。
c36a42ff-1d15-4317-9107-19b4a0fa0ded.png
回复

使用道具 举报

4

主题

18

回帖

30

积分

新手上路

QM

积分
30
QQ
 楼主| 发表于 2024-10-17 10:03:12 | 显示全部楼层
好像是串口的问题,我再看看
回复

使用道具 举报

4

主题

18

回帖

30

积分

新手上路

QM

积分
30
QQ
 楼主| 发表于 2024-10-17 14:19:03 | 显示全部楼层
已解决,问题出在变量的定义位置
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-28 19:26 , Processed in 0.257316 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表