1. 先看下出错的提示

2. 出错的代码部分,现在问题是定位不到哪一行代码出问题,反正运行一段时间就进入了

lRetVal = sl_WlanConnect((signed char*)ssid, strlen(ssid), , &secParams, );

出问题之后进入hard fault

static void
FaultISR(void)
{
while() { }
}

3. 现在需要更多的信息来查找原因,既然都是以前的代码都运行正常的,唯一变的就是IAR编译器,是不是优化等级的问题,修改优先级依然无法解决

4. 比较关注的一个问题,这个应该是IAR的新版本这个是32位的。但是之前编译的库是16位的。重新把库编译一下即可。

Warning[Lt009]: Inconsistent wchar_t size
netcfg.o(simplelink.a) and other objects in different libraries have wchar_t size bits
ap_cmd.o and other objects, some of them in dl7M_tln.a and other libraries have wchar_t size bits

5. 是不是芯片的硬件版本有升级过?其他工程可以正常运行的。

6. 是不是电流不够,在VCC和GND之间加一个大的电容测试一下,还是出错

7. 增加一个电源供电测试一下,问题依然存在

8. 换了之前的模块,问题依然存在

9. 修改中断向量表初始地址,原来的默认值是0x20000000

#define NVIC_VTABLE_BASE        0x20004000  // Vector Table Base

10. 奇怪的是每次屏蔽一行,出问题的地方就会在下一行,难道是定时器的问题?定时器中断然后出了问题?

11. 突然注意到一个关键点,这句话的意思是处理器接收到了一个错误的中断,难道是中断向量表没写对?

This is the code that gets called when the processor receives a fault interrupt.

接下来测试一下,是不是到一定时间一定会死机。想到一个问题就是目前只有那个1ms切换任务的定时器才会中断,经过测试发现,下面函数如果使用的话,就会死机

void sys_info_init(void)
{
if( == strcmp(g_p_wifi_para_run->wmode, "AP") )
{
g_sys_info.wmode = LSD_WIFI_AP;
}
else if( == strcmp(g_p_wifi_para_run->wmode, "STA") )
{
g_sys_info.wmode = LSD_WIFI_STA;
} strcpy(g_sys_info.wsssid, g_p_wifi_para_run->wsssid);
strcpy(g_sys_info.wskey, g_p_wifi_para_run->wskey.password);
strcpy(g_sys_info.wsmac, g_p_wifi_para_run->wsmac);
strcpy(g_sys_info.wamac, g_p_wifi_para_run->wamac);

继续经过测试发现死机和这个有关,g_sys_info,偶尔注意到一个参数,就是最后一个参数lps,这个是低功耗控制的,难道和它有关,再次联想低功耗是1ms定时器去处理的,所以有可能有关。

typedef struct sys_info
{
uint8_t wmode; // LSD_WIFI_AP/LSD_WIFI_STA/LSD_WIFI_APSTA
char wsssid[];
char wskey[];
char wsmac[];
char wamac[];
uint8_t debug;
uint32_t authmode; // 加密方式
uint8_t wann_mode; // DHCP/static
uint8_t wreconn; // WIFI reconnect:0/1
uint8_t wreconn_cnt; // WIFI reconnect count
uint8_t wreconn_cnt_2; // WIFI reconnect count
uint8_t lps;
}SYS_INFO;

修改定时器的钩子函数,屏蔽中间的函数cc_idle_task_pm,发现程序运行正常

void vApplicationIdleHook( void)
{
if(g_sys_info.wmode == LSD_WIFI_STA)
if(enter_lps_ok == )
{
cc_idle_task_pm(); // 先关闭低功耗
}
}

然后再次去分析,发现这个值是初始化为1的

int enter_lps_ok = ;

12. 总结以上信息去再次分析下代码,在设置为STA模式下,进入了低功耗不能继续仿真了。自己两年前写的代码,好不记得了,所以坑了一下。

CC3200作为STA模式连接路由器sl_WlanConnect出现exception occured at:0xa72fcf6的更多相关文章

  1. CC3200在AP模式的TCP sock作为客户端连接时返回SL_ECONNREFUSED(-111) Connection refused

    1. CC3200处于AP模式(电脑无线连接CC3200的WIFI信号),开启一个TCP socket,这个socket作为TCP客户端去连接TCP服务器端 struct sockaddr_in ad ...

  2. 10-51单片机ESP8266学习-AT指令(ESP8266连接路由器,建立TCP服务器,分别和C#TCP客户端和AndroidTCP客户端通信+花生壳远程通信)

    http://www.cnblogs.com/yangfengwu/p/8871464.html 先把源码和资料链接放到这里 源码链接:https://pan.baidu.com/s/1wT8KAOI ...

  3. 25-ESP8266 SDK开发基础入门篇--控制WIFI连接路由器

    https://www.cnblogs.com/yangfengwu/p/11324411.html 说个事情,现在SDK的版本已经出到3.0了,但是我还是使用2.0 如果只是为了学习研究   选择3 ...

  4. WIFI模块AP和STA模式分别是什么意思

    无线AP(Access Point):即无线接入点,它用于无线网络的无线交换机,也是无线网络的核心.无线AP是移动计算机用户进入有线网络的接入点,主要用于宽带家庭.大楼内部以及园区内部,可以覆盖几十米 ...

  5. 选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。

    异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. ...

  6. 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式

    在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 转载自:http://blog.163.com/smhily_min/blog/static/75206226201092011 ...

  7. SWD模式连接与注意事项

    JTAG模式与SWD模式连接图 SWD 仿真模式概念简述 一.SWD 和传统的调试方式区别 1. SWD 模式比 JTAG 在高速模式下面更加可靠. 在大数据量的情况下面 JTAG 下载程序会失败, ...

  8. WIFI的AP/Sta模式简单介绍

    AP模式: Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下.AP和AP之间允许相互连接 Sta模式: Station, 类似于无线终 ...

  9. c# Clipboard.SetDataObject(bmp1) 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常

    c# Clipboard.SetDataObject(bmp1)  在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttri ...

随机推荐

  1. flume-ng 自定义sink消费flume source

    如何从一个已经存在的Flume source消费数据 1.下载flume wget http://www.apache.org/dist/flume/stable/apache-flume-1.5.2 ...

  2. [原]Android打包之Eclipse打包

    Android自动打包流程详细图: 步骤一: 在工程中新建一个build.xml. 步骤二: 给工程配置ant工具. 选择ant工具的步骤如下: Windows->Shown view-> ...

  3. python:包与异常处理

    一.包 1,什么是包? 把解决一类问题的模块放在同一个文件夹里-----包 2,包是一种通过使用‘.模块名’来组织python模块名称空间的方式. 1. 无论是import形式还是from...imp ...

  4. idea + maven + webapp 项目搭建

    1.File-> New -> Project

  5. 【遥感专题系列】微波遥感(三、SAR图像特征)

    SAR是主动式侧视雷达系统,且成像几何属于斜距投影类型.因此SAR图像与光学图像在成像机理.几何特征.辐射特征等方面都有较大的区别.在进行SAR图像处理和应用前,需要了解SAR图像的基本特征. 本文主 ...

  6. maven学习记录三——maven整合ssh框架

    6       整合ssh框架 6.1     依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 6.2     依赖版本冲突的解决 1.  第 ...

  7. Struts2 第一讲 -- Struts2开发前奏

    我们在学习Struts之前,先来复习一下Servlet,众所周知Servlet是JavaWeb的三大组件.我们发送一个请求,这个请求交给Servlet处理,Servlet将处理的结果返还给浏览器.每个 ...

  8. 使用js获取表单元素的值

    function getParams(formName) { var frmMain = document.getElementById(formName)?document.getElementBy ...

  9. 配置隐私协议 - iOS

    根据苹果隐私协议新规的推出,要求所有应用包含隐私保护协议,故为此在 App 中添加了如下隐私协议模块. 首次安装 App 的情况下默认调用隐私协议模块展示相关信息一次,当用户点击同意按钮后,从此不再执 ...

  10. iOS10 开发权限适配设置 崩溃(上传打包后构建版本一直不显示)

    ios10 系统必须强制配置系统权限 如果不配置,调试的时候导致崩溃,还会引发包无效的问题,导致上传打包后构建版本一直不显示 解决方案1.在项目中找到info.plist文件,右键点击以 Source ...