
MCU
ST(Cortex-M3、M4)、GD32、华大(HC32L110)、凌思微(LE5010)、芯象(LH3200)等
一叶知秋06
嵌入式软件工程师一枚,喜欢刨根问底,一叶可知秋,一叶亦可障目,不见泰山。
展开
-
STM32休眠STOP模式问题
因为STOP休眠模式用的是LSI,即32KHZ,主时钟为64MHZ,64分频之后为1MHZ,唤醒之后默认用的还是LSI,时间上差不多扩大了4倍,所以,定时时间为原来的4倍才进入定时。STOP休眠唤醒,每次时间都是定时的4倍才进入休眠?唤醒之后重新初始化系统时钟即可。休眠唤醒系统时钟问题。原创 2024-12-13 16:24:52 · 177 阅读 · 0 评论 -
STM32CubeMX配置-PWM输出
基于STM32G070的通用定时器TIM15,主频64MHZ。二、初始化及设置PWM。原创 2024-11-08 13:26:05 · 560 阅读 · 0 评论 -
STM32G070休眠例程-STOP模式
主控是STM32G070,在低功耗休眠模式时采用Stop0模式,通过外部中断唤醒,唤醒之后,即可开启对应的功能输出,另外程序中设计有看门狗8S溢出,这个采用RTC定时6S周期唤醒去喂狗,RTC唤醒喂狗的过程中,设备现象上看不出来。1.进入休眠之前,I/O电平根据电路设置,以降低休眠时硬件功耗;2.进入休眠之前,所有计时及标志位清零;3.唤醒之后,重新初始化一次系统时钟;4.RTC唤醒时,不执行功能输出;2.RTC周期唤醒,外部中断唤醒。1.RTC周期唤醒配置。1.STOP0休眠模式。2.外部中断唤醒配置。原创 2024-06-24 10:58:23 · 798 阅读 · 0 评论 -
STM32CubeMX配置-外部中断配置
MCU为STM32G070,配置为上升沿触发外部中断,在上升沿外部中断回调函数中进行相关操作。查看规格书中管教描述,找到I/O对应的外部中断线,然后进行如下上升沿触发外部中断配置。调用上升沿外部中断回调函数。原创 2024-06-16 22:13:56 · 430 阅读 · 0 评论 -
STM32CubeMX配置-RTC周期唤醒
MCU为STM32G070,采用内部时钟32KHZ,配置为周期6s唤醒,调用回调函数,进行喂狗操作。初始时间、日期、周期唤醒时间配置。调用回调函数,进行喂狗操作。原创 2024-06-16 22:35:54 · 774 阅读 · 0 评论 -
STM32CubeMX配置-看门狗配置
一、简介 MCU为STM32G070,LSI为32K,看门狗IWDG配置为4S溢出,则配置是设置分频为32分频,重装载值为3000。二、IWDG配置1.外设配置2.时钟配置原创 2024-06-16 21:23:42 · 462 阅读 · 0 评论 -
STM32CubeMX配置-IIC读写
通过STM32G070配置IIC协议,读取智融SW35xx的电流,读取之前需先配置ADC读取的数据类型,再进行读取。配置的是硬件IIC2,标准模式,100KHZ。原创 2024-06-02 16:16:42 · 898 阅读 · 4 评论 -
软件加入版本、日期、时间
_attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。attribute,翻译为“属性”,在C语言中,是一个关键字,语法格式为:__attribute__ ((attribute-list))日期、时间:printf("CompileDate: %s %s\r\n",__DATE__,__TIME__);软件版本一般是用空定义,记录内部版本、外部版本;原创 2024-04-01 22:07:04 · 309 阅读 · 0 评论 -
STM32CubeMX配置-互补PWM及死区配置(STM32G070)
本工程是基于STM32G070的高级定时器TIM1的通道2和通道3产生两路互补PWM,频率为320KHZ,PWM周期200(即为占空比100%)。因为互补PWM只能由高级定时器产生,STM32G070的高级定时器只有TIM1。//通道2 PWM占空比98%,通道2互补输出PWM占空比2%(PWM占空比100%=200)//通道3 PWM占空比50%,通道3互补输出PWM占空比50%1.使用高级定时器TIM1的通道2和通道3产生互补PWM。原创 2024-02-07 22:37:07 · 1992 阅读 · 1 评论 -
STM32串口通信过载溢出问题
然后,网上查资料,看到HAL库的接收中断里面有加锁、解锁操作,数据量大会导致串口锁死,进入串口接收中断函数,STM32Cube_FW_G0_V1.6.0版本里面没有加锁;3.定时500ms,检测几个串口的ORE是否置位,置位则清除ORE标志,重新打开中断,这个比较稳定靠谱一些,即使串口接收回调函数异常,也不影响清除ORE标志。用STMG070的4个串口中两个串口实时通信时,偶发某个串口通信挂掉,进入不了接收中断函数,但是能进入接收回调函数,另一个串口通信正常,其他程序正常运行?三种解决方案:(推荐第3种)原创 2023-11-22 23:28:04 · 2809 阅读 · 0 评论 -
STM32CubeMX配置-PWM(STM32G070)
【代码】STM32CubeMX配置-PWM(STM32G070)原创 2023-09-17 17:39:26 · 379 阅读 · 0 评论 -
STM32CubeMX配置-基本定时器TIM6(STM32G070)
通用定时器-TIM3, TIM14, TIM15, TIM16, TIM17。基本定时器-TIM6, TIM7。高级定时器-TIM1。原创 2023-09-17 17:19:12 · 941 阅读 · 0 评论 -
STM32CubeMX配置-串口配置(RCC,Manager配置)
生成代码默认不开中断,初始化时需打开中断,程序才会进入中断函数。如果要调用中断函数,初始化时需打开中断。4.工程配置 Project Manager。原创 2023-09-17 16:52:39 · 1906 阅读 · 1 评论 -
STM32CubeMX配置-ADC多通道配置(DMA) (STM32G070)
需手动开启ADC采集:HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC1_Value,6);2)采用中断方式,ADC采集完成进入中断,中断关闭ADC采集,取数据之后再打开ADC采集。如果要控制轮询采样通道,设置Sequencer参数,Rank1,2,3即为采样通道顺序。二、配置RCC、SYS、时钟及Project Manager,生成代码。1)ADC轮询采集数据直接放到数组中;二、ADC多通道配置。原创 2023-09-10 16:33:10 · 2128 阅读 · 1 评论 -
LE5010蓝牙芯片(凌思微)开发总结
一、问题描述:项目中有一个温度传感器NST1001是通过计数脉冲来获取温度原始值的,每个 50ms一个周期,脉冲周期最大30ms,脉冲脚配置为外部中,因为频繁进入外部中断,导致和蓝牙广播中断冲突,造成程序死机。解决思路如下:1. 造成死机的原因是蓝牙和外部中断异常,可以把蓝牙和外部中断分开执行;2. 蓝牙广播间隔20ms~10.24s,可以适当拉大蓝牙广播间隔;3. 外部中断计数脉冲结束,关闭NST1001电源和外部中断,再进行蓝牙广...原创 2021-12-06 18:09:45 · 5003 阅读 · 2 评论 -
Keil5生成.bin文件
步骤如下:点击魔术棒,进入工具栏,选择user,打钩下图Run#1,输入生成路径。路径:fromelf(一个空格) --bin(一个空格) --output(一个空格) .\GPIO\GPIO.bin(一个空格) .\GPIO\GPIO.axf。.\GPIO\GPIO.bin为本文件路径下GPIO文件夹里面生成GPIO.bin文件。fromelf --bin --output .\GPIO\GPIO.bin .\GPIO\GPIO.axf...原创 2021-09-18 15:18:46 · 914 阅读 · 0 评论 -
STM32IAP升级 bootoader跳转到freeRTOS死机
一、问题描述二、分析问题三、解决问题void iap_load_app(u32 appxaddr)//{ SysTick->CTRL = 0X00;//禁止SysTick SysTick->LOAD = 0; SysTick->VAL = 0; __disable_irq(); jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址) MSR_.原创 2021-08-17 19:15:36 · 6050 阅读 · 5 评论 -
报错:Hal_StatusTypeDef is undefined,解决办法
1.报错Hal_StatusTypeDef is undefined,但是go to definition可以跳转过去原创 2021-07-10 13:38:25 · 2870 阅读 · 2 评论