MCU 调试运行正常,去掉调试器不运行,解决方法

news/2024/11/25 14:40:04/

目录

硬件

现象

处理思路

处理过程记录

us延时准备用systick实现

实现

结论


硬件

官方评估板

现象

sdk例程 独立运行都正常。但是自己写的代码,调试运行正常,独立(去掉调试器)运行却不行。

处理思路

使用的代码一点点注释掉,把问题缩小。

处理过程记录

	cs1237_init(0,g_cs1237_device_st, 	DEV_FREQUENCY_1280, DEV_PGA_1, DEV_CH_A);

注释掉上面一段之后系统独立运行正常,通过log/LED转台可以观察到。

问题进一步定位到是卡到delay us这个函数;

__STATIC_INLINE void delay_us (volatile uint32_t microseconds)
{uint32_t clk_cycle_start = DWT->CYCCNT;/* Go to number of cycles for system */microseconds *= (system_core_clock / 1000000);/* Delay till end */while ((DWT->CYCCNT - clk_cycle_start) < microseconds);
}

delay延时是使用的DWT外设,这个是我第一次使用,怀疑这个外设难道只能在线调试使用?

us延时准备用systick实现

vTaskStartScheduler();
xPortStartScheduler();

systick的配置与使能是在这里完成的

   /* Shift the priority group value back to its position within the AIRCR* register. */ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;ulMaxPRIGROUPValue &= portPRIORITY_GROUP_MASK;

找了大半天。

也就是说要在freertos 启动之后才能使用systick 相关的延时。

实现

创建一个任务,初始化完成之后删除自己。

void StartDefaultTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask *//* Infinite loop */// 这个任务进行初始化, 在完成后删除自身kalman_init(&g_kfp_st);// 设置cs1237参数cs1237_init(0,g_cs1237_device_st, 	DEV_FREQUENCY_1280, DEV_PGA_1, DEV_CH_A);vTaskDelete(NULL);/* USER CODE END StartDefaultTask */
}

在写systick delay的时候突然发现 上面使用的 DWT 是通过 delay_init 实现的,但是却没有初始化。

DWT  初始化之后 相关的延时函数正常,系统独立启动正常。

结论

系统不能独立启动的原因是 DWT  实现的延时函数卡死导致;

延时函数卡死是因为 DWT  没有初始化导致;(但是这个延时函数在线调试正常使用)。

初始化DWT 之后,系统正常。

systick 暂时还是只做系统时基使用。


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

相关文章

PSU 19.19安装

参考文档&#xff1a; https://updates.oracle.com/Orion/Services/download?typereadme&aru25183811 OPatch lsinventory or Apply New Patch With Opatch apply Fails With Error "Unable to create patchObject" Inventory Corrupted (Doc ID 2792549.1) TFA…

为什么添加缓存要在释放锁之前?

为什么加缓存要放在释放锁之前&#xff1f; 线程拿到锁会去查缓存是否有数据&#xff0c;又因为我们向redis存入缓存数据是在释放锁之后 那么释放锁之后&#xff0c;下一个线程查缓存&#xff0c;上一个线程并未存入完成。此时就会出现查询多次数据库的情况&#xff0c;锁失效…

【大数据工具】Flink集群搭建

Flink 集群安装 1. 单机版 Flink 安装与使用 1、下载 Flink 安装包并上传至服务器 下载 flink-1.10.1-bin-scala_2.11.tgz 并上传至 Hadoop0 /software 下 2、解压 [roothadoop0 software]# tar -zxvf flink-1.10.1-bin-scala_2.11.tgz3、创建快捷方式 [roothadoop0 soft…

光机电气一体化控制实训系统

ZN-01GJD光机电气一体化控制实训系统 一、实训考核装置的构成&#xff1a; ZN-01GJD光机电气一体化控制实训系统由由铝合金导轨式实训台、典型的机电一体化设备的机械部件、PLC模块、变频器模块、按钮模块、电源模块、模拟生产设备实训模块、接线端子排和各种传感器、计算机等组…

不止Chat,GPT-4 将释放更大生产力

目录 1.对 ChatGPT 的巨大超越 2.与 ChatGPT 相同的技术路线 3.GPT-4 背后的强大阵容 4.开启多模态大模型时代 相比 ChatGPT 能力有大进化&#xff0c;多模态上有突破但不多。 近日&#xff0c;多模态大模型 GPT-4 震撼登场&#xff01; GPT-4 能够接受图像和文本输入&am…

音视频同步的方法:深入探索基于FFmpeg的音视频同步策略

音视频同步艺术&#xff1a;深入探索基于FFmpeg的同步策略 &#xff08;一&#xff09;音视频同步的基本概念与重要性&#xff08;Basic Concepts and Importance of Audio-Video Synchronization&#xff09;1.1 音视频同步的定义与影响&#xff08;Definition and Impact of …

python爬虫入门,10分钟就够了,这可能是我见过最简单的基础教学

一、基础入门 1.1什么是爬虫 爬虫(spider&#xff0c;又网络爬虫)&#xff0c;是指向网站/网络发起请求&#xff0c;获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为&#xff0c;把站点返回的HTML代码/JSON数据/二进制数据&…

正版软件 | DaisyDisk:Mac 电脑一流的磁盘空间管理工具

使用 Mac 工作时&#xff0c;平时创建并下载大量文件&#xff0c;但很容易忘记或者很少删除这些内容。但是有一天&#xff0c;您发现启动磁盘已红&#xff0c;但是自己又好似没有安装啥软件&#xff0c;这时候就会想到底是哪些数据占用了这么大的空间&#xff1f;&#xff01; …