![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
get新技能
这个作者很懒,什么都没留下…
展开
-
STM32 HAL 提示初始化文件没有声明
使用cubemx生成工程后,再添加的功能模块,首先会提示一些结构体找不到,经过查找发现是宏定义没有打开,当你在STM32xxxx_hal_conf.h中打开相应的宏后,提示初始化函数未声明,这时需要把对应功能模块的.c文件添加进工程进行编译。...原创 2020-11-25 21:23:22 · 397 阅读 · 0 评论 -
Keil生成bin文件
fromelf --bin -o “$L@L.bin” “#L”原创 2020-07-23 11:23:58 · 117 阅读 · 0 评论 -
STM32L4 Timer计数偏快
在配置STM32L4的Timer时钟为80M时发现,每秒出现在计数器内的count值和实际应该出现的值不一致,快了5-6倍。具体原因现在还不知道,经过尝试发现,在配置timer的时钟为40M时,没有这个问题,很稳定。可能跟外设允许的频率有关系吧。...原创 2020-07-17 14:45:01 · 466 阅读 · 0 评论 -
IAR项目工程中使用变量定义数组长度或者使用printf(“%.*s“)输出固定长度的字符串的额外配置
需要在工程的配置中打开Allow VLA选项原创 2020-07-06 15:11:45 · 696 阅读 · 0 评论 -
easyLogger中文乱码
产生原因:编码格式问题,使用UTF-8编码源文件就不会有这个问题。解决方案1:使用notepad++打开乱码文件,在菜单栏选择编码,选择转为UTF-8编码。再次编译文件就没有乱码问题了原创 2020-06-29 14:26:24 · 509 阅读 · 0 评论 -
STM32 从RAM中运行程序
原创 2020-06-22 16:49:42 · 2121 阅读 · 0 评论 -
STM32 局部变量允许的最大长度
局部变量(定义在函数内部的变量)存放在CSTACK中,所以局部变量允许定义的大小不应大于设置的CSTACK大小。否则会出现死机或者程序执行异常现象。原创 2020-06-19 17:16:06 · 1590 阅读 · 0 评论 -
STM32L431功耗参考表
原创 2020-06-19 14:24:01 · 2970 阅读 · 0 评论 -
STM32 以固定频率进行DMA连续转化
1,选择ADC 和 通道2,配置ADC 参数关闭连续转换,开启扫描,开启非连续转换,使能DMA连续转换,以一个组为单位进行转换。设置转换的通道数,设置触发源,设置触发边沿,设置每个通道的参数。3,配置DMA选择DMA的模式为循环模式...原创 2020-06-19 11:20:24 · 936 阅读 · 0 评论 -
STM32 OSPI四线读取 SST26VF064B ID
读取时序代码: OSPI_RegularCmdTypeDef sCommand; HAL_GPIO_WritePin(OCTOSPIM_P1_NSS1_GPIO_Port, OCTOSPIM_P1_NSS1_Pin, GPIO_PIN_RESET); sCommand.OperationType = HAL_OSPI_OPTYPE_COMMON_CFG; sCommand.FlashId = HAL_OSPI_FLASH_ID_1; sCommand.Instru原创 2020-06-11 16:33:47 · 4238 阅读 · 2 评论 -
STM32 DAC 利用DMA和timer进行连续转化
话不多说,直接上配置。开发环境,CubeMX5.6.1+IAR8.40.2+STM32L476RGDAC channel1 (PA4)Timer2触发详细配置如下:DAC:DMA:Timer:在初始化的时候,进行了DAC校准:HAL_DACEx_SelfCalibrate(&hdac1, &sConfig, DAC_CHANNEL_1);这个的转化时间,大概是7ms左右。Timer DAC DMA 初始化后,调用HA...原创 2020-06-04 00:29:42 · 1039 阅读 · 0 评论 -
STM32 TIMER触发的详细流程
TIMER启动-----》到达预装载值-----》清除CNT,重新开始计数------》触发中断。验证方式,在TIMER的中断里查看CNT的值,我主频4M,timer是1MHz的频率,中断里TIMER的CNT为4。如果是先进中断才清除CNT,则CNT的值应为我设置的预装载值。如果是中断后才开始的重新计数,CNT的值应该为0或者预装载值。所以综上所述,TIMER是先清零,重新计数,然后再进的中断。...原创 2020-05-29 19:10:21 · 1011 阅读 · 0 评论 -
硬件调试---模拟I2C
模拟I2C在开发中使用的很多,尤其是在51和早期的STM32程序中(网上流传着一种说法:那就是STM32 I2C有问题,实际上我用的过程中并没有发现)。好的,那么问题来了,我在调试的过程中贪图省事,把模拟I2C中设置SDA输入输出的设置给省了,导致读写寄存器正常,但是连续读取一些数据的时候却出了问题,只能读取很少的一部分数据,困扰了两天,终于在示波器的帮助下找到了问题。那些异常的波形就是没有设置SDA引脚为输入导致的。总结:遇到串行通信问题,示波器绝对是个好帮手,还有就是真的不能偷懒,改写的还是要写。原创 2020-05-28 23:23:08 · 282 阅读 · 0 评论 -
STM32 SD卡使用SDIO DMA卡死解决办法
在使用SDIO操作SD卡时,如果底层BootLoader也有操作SDIO,则可能(一般是SD卡出现质量问题的时候)会出现应用层一直卡死在SDIO的DMA中断里,解决办法就是在初始化的时候将相关的寄存器清空。...原创 2020-04-14 11:03:33 · 3954 阅读 · 0 评论 -
STM32 CubeMX中FreeRTOS的默认配置
内存分配方式:heap4总共有5种,heap4是通用型的**节拍的速率:**1000HZ.抢占:默认是开启的如果这个不开启,则要为每个任务配置不同的优先级特别要注意的是:所有的FreeRTOS阻塞都会引起任务切换。包括osDelay() 、信号量获取和释放、消息队列的读写、邮箱等。...原创 2020-04-02 11:01:32 · 232 阅读 · 0 评论 -
FreeRTOS临界区操作
进入临界保护(支持嵌套):taskENTER_CRITICAL();退出临界保护(支持嵌套):taskEXIT_CRITICAL();中断里进入临界保护(支持嵌套): taskENTER_CRITICAL_FROM_ISR();中断里退出临界保护(支持嵌套): taskEXIT_CRITICAL_FROM_ISR( x );进入临界保护的定义代码:从中可以看出,uxCritical...原创 2020-04-02 10:40:29 · 950 阅读 · 0 评论 -
STM32 获取系统重启原因(STM32F407VET6为例)
在stm32f4xx_hal_rcc.h中,有如下重启的原因#define RCC_FLAG_BORRST ((uint8_t)0x79)#define RCC_FLAG_PINRST ((uint8_t)0x7A)#define RCC_FLAG_PORRST ((uint8_t)0x7B...原创 2020-01-16 14:55:34 · 3782 阅读 · 4 评论 -
STM32L4 浮点运算 注意事项及问题
1,问题:在项目中使用double类型的数据进行浮点运算时,出现运算时间长,运算为0,或者错误的情况。2,解决方案方法1:如果用的浮点不是很大的话,可以将double转为float,方法2:将数据转为整形,然后再进行计算,最后再将数据转为浮点型由于我在项目中使用的浮点数不是很大,所以优先使用了方法1。3,后续不过引起这个问题的具体原因,我目前还不是很清楚,所以只能先这样解决了,只能等后...原创 2019-03-20 10:19:03 · 2653 阅读 · 0 评论 -
STM32 HAL CubeMX断码屏配置与使用
STM32L476 LCD直接驱动断码屏使用注意事项1,配置:1.1对于偏压,电路上可以不用做处理,直接在软件里配置即可1.2High Drive 选项如果不勾选,可能会造成,点亮SEG上的多条线,同一个 EG的其他线也会被点亮。2,使用在stm32l4xx_hal_lcd.h中包含以下操作函数//初始化函数 如果使用cubemx配置工程, 这个可以不用关心,软件会帮我们...原创 2019-03-13 09:00:31 · 2496 阅读 · 0 评论 -
STM32 LCD HAL库 HAL_LCD_Write函数使用说明
HAL_LCD_Write(LCD_HandleTypeDef *hlcd, uint32_t RAMRegisterIndex, uint32_t RAMRegisterMask, uint32_t Data);函数参数解析:LCD_HandleTypeDef *hlcd 初始化的LCD句柄指针uint32_t RAMRegisterIndex RAM寄存器,COM口寄存器uint32...原创 2019-03-13 09:28:20 · 6275 阅读 · 5 评论 -
STM32L4低功耗模式下LCD唤醒时闪屏
正常情况下,STM32从低功耗模式下唤醒时,都需要重新初始化时钟,但是如果LCD使用的时钟被初始化,则就会出现闪频的现象,只会闪一下,然后再迅速回复正常。解决办法,使用和RTC一样的时钟源,例如使用LSI,这样在唤醒时,不初始化LSI时钟,系统也能正常运行。...原创 2019-03-29 17:20:41 · 1070 阅读 · 0 评论 -
STM32 串口空闲中断 DMA方式 cubeMX环境下
我这里使用的芯片是STM32F103RBT61,正常配置一个串口,勾选uart4,2,为串口配置一个接收的DMA3,打开串口中断4,生成软件,并在软件里开启串口空闲中断5,在串口中断函数里,检测空闲中断,获取接收的字符串长度这里面需要注意的是,DMA的剩余长度是指,假如我们一开始调用HAL_UART_Receive_DMA函数指定的接收长度是100,现在...原创 2019-07-01 13:41:11 · 1031 阅读 · 0 评论 -
Qt CRC16校验中,有时候电脑计算的CRC值和单片机中计算的值不一样
在项目中为了图省事,想要直接使用QByteArray 的data方法,将CRC16校验中的校验数据类型,从unsigned char* 变成了char *.结果导致了只要校验数据中有负数就会出现和单片机中的检验数据不一样。主要原因是单片机中的unsigned char 和char 是一样。而电脑是区分的,所以这也就导致了即使我在单片机那一端也将校验数据的数据类型改为char *,也一样会出现错误。...原创 2019-07-12 14:17:33 · 1578 阅读 · 0 评论 -
STM32 多通道ADC注意事项
1,在使用ADC多通道时,如果使用了DMA,则DMA的模式一定要配置为Circular模式,否则只会转化一次。至于单通道有没有这个问题,就要等到后面有时间的时候再验证了。...原创 2019-03-20 10:10:30 · 905 阅读 · 0 评论