新闻详情

新闻详情

首页 / 资讯中心 / 详情

STM32G030 LL库 LL_mDelay()大坑

发布时间:2026/10/2 17:15:06来源:尧图网络
STM32G030 LL库 LL_mDelay()大坑
最近使用STM32G030F6P6这款芯片使用STM32 CubleMX生成工程在实际使用调用LL库充LL_mDelay()毫秒延时函数发现LL_mDelay(1)实际延时不是1ms而是2ms。检查时钟配置输出到io测试均没有问题百思不得其解。一度怀疑买了假的芯片。后来无意中看了一眼LL_mDelay()函数原型才发现这个大坑这个LL_mDelay(1)函数实际精度延时是1ms~2ms具体是多少看跳进延时那一刻清Systick的COUNTFLAG标志位的时候SysTick-VAL的值是多少。库函数版本STM32Cube_FW_G0_V1.5.1STM32 CubleMX版本6.3.0LL_mDelay()函数原型void LL_mDelay(uint32_t Delay) { __IO uint32_t tmp SysTick-CTRL; /* Clear the COUNTFLAG first */ uint32_t tmpDelay; /* MISRAC2012-Rule-17.8 */ /* Add this code to indicate that local variable is not used */ ((void)tmp); tmpDelay Delay; /* Add a period to guaranty minimum wait */ if (tmpDelay LL_MAX_DELAY) { tmpDelay ; //问题就出在这里 } while (tmpDelay ! 0U) { if ((SysTick-CTRL SysTick_CTRL_COUNTFLAG_Msk) ! 0U) { tmpDelay --; } } }测试函数(通过反转LED Pin挂示波器测试int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG); LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR); /* System interrupt init*/ /* SysTick_IRQn interrupt configuration */ NVIC_SetPriority(SysTick_IRQn, 3); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_I2C1_Init(); /* USER CODE BEGIN 2 */ LL_SYSTICK_SetClkSource(LL_SYSTICK_CLKSOURCE_HCLK); // /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ LL_GPIO_TogglePin(LED_GPIO_Port ,LED_Pin); LL_mDelay(1); } /* USER CODE END 3 */ }验证实际LL_mDelay(1)LED电平反转是2msLL_mDelay(0)LED电平反转是1ms原因就是 LL_mDelay()为了保证延时至少达到预期以上定时时长自加了1太操蛋了对于需要精确时序控制的场合还是自己写这个顺手的API是大坑if (tmpDelay LL_MAX_DELAY) { tmpDelay ; }
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

小样本工业缺陷检测:从数据策略到漏检控制的完整方案 2026/10/2 19:00:20

小样本工业缺陷检测:从数据策略到漏检控制的完整方案

品控主管上周找我,说产线上新增了一款传感器外壳的检测需求:表面划伤、压痕、脏污三种缺陷,正常品一天能拍两千张,但真正有缺陷的样品,整条产线翻了个底朝天只凑出四十多张。要求还很明确——漏检率压到最低&#xff0…

阅读更多 →
微信小程序获取当前页面 URL 与参数:getCurrentPages 路由实践 2026/10/2 19:00:20

微信小程序获取当前页面 URL 与参数:getCurrentPages 路由实践

上周三下午,同事甩过来一个埋点需求:活动页要把用户当前所在页面的完整 url 和参数一起上报给数据平台,用来分析不同渠道进来的转化路径。我第一反应是「这不简单」,结果写了三版才把边角情况兜住——扫码进来的 scene 是编码的、…

阅读更多 →
Playwright实战指南:从零搭建到自动化测试进阶 2026/10/2 19:00:06

Playwright实战指南:从零搭建到自动化测试进阶

1. 前端自动化测试的痛点与Playwright的破局思路1.1 曾经那些让人头大的自动化测试问题做了几年测试开发,前端自动化这条路我是一路踩坑踩过来的。早年团队用的是Selenium WebDriver,配合各种语言绑定和驱动管理,光是环境搭建就能折腾大半天。…

阅读更多 →
OpenShell:用命令面板和插件重塑终端工作流,告别长命令 2026/10/2 19:00:00

OpenShell:用命令面板和插件重塑终端工作流,告别长命令

如果你也是那种每天在终端里进进出出的人,大概率跟我一样,天天被长命令、多工具切换搞得头晕。OpenShell这个开源终端增强工具就是冲这个问题来的——它是在Shell之外加的一层交互增强层,核心思路很简单:把常用命令沉淀成可检索、…

阅读更多 →
文本LLM动画创作:中间件跨越语义鸿沟的工程实践 2026/10/2 19:00:00

文本LLM动画创作:中间件跨越语义鸿沟的工程实践

从“文本LLM驱动动画创作工具”这几个词拆开看,你会发现它其实聚拢了三类完全不同的受众:做视频生成的、做3D资产的、做分镜编排的。这个赛道声量最大的是第一类,但真正想把它接进生产流程的团队,十有八九会卡在同一条沟里——模型…

阅读更多 →
Codex 安装配置与模型接入实战:从登录报错到 DeepSeek 接入的完整避坑指南 2026/10/2 18:59:53

Codex 安装配置与模型接入实战:从登录报错到 DeepSeek 接入的完整避坑指南

1. 从重度使用者的角度重新认识 Codex1.1 为什么我最终把 Codex 留在了主力工具链里我大概是从 Codex 刚开放命令行形态的时候就开始折腾的那批人。中间换过不少同类工具,也试过把 Codex 和编辑器插件、终端、桌面端来回组合,最后稳定下来的方案其实很朴…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉