STM32应用
STM32应用
小康师兄
1、多年嵌入式软件开发经验;
2、同样擅长Android开发和微信小程序开发;
3、做过大厂的系统工程师,当过小厂的嵌入式主管,现在是个创业公司的软件经理;
4、对IoT物联网开发有自己的见解,业余时间喜欢沉淀、整理与分享输出自身的技术知识。
展开
-
FreeRTOS STM32 线程创建失败,单步运行一看才发现是内存不够
文章目录一、FreeRTOS线程创建失败二、失败的解决方法三、成功的解决方法一、FreeRTOS线程创建失败今天用STM32板子跑一个测试demo,结果一上车就翻车。一个简简单单的线程起不来。断点进不去,单步运行一看,才发现是内存不够二、失败的解决方法内存太小,就扩大内存。我一看他是动态内存分配,第一直觉就想到要增加堆栈。错误的!!!三、成功的解决方法FreeRTOS的动态内存不是使用C语言的malloc,是其自主造出来的米其林三星大轮毂超跑轮胎需要增大configTOTAL_HE原创 2021-12-27 15:12:05 · 2577 阅读 · 3 评论 -
STM32 Keil问题解决:not a genuine st device
一、问题下载程序的时候,突然抽风了遇到这个问题二、解决有人说,修改C:\Keil_v5\ARM\PACK\Keil\STM32F4xx_DFP\2.13.0\Keil.STM32F4xx_DFP.pdsc即可// Query(0, "Not a genuine ST Device! Abort connection", 1);// Message(2, "Not a genuine ST Device! Abort connection.");改完之后,这个问题确实不报了,但是依旧无法下原创 2021-08-27 19:56:50 · 4655 阅读 · 7 评论 -
STM32 Keil问题解决:Invalid ROM Table
一、问题一般是工程烧错了,板子弄混了。二、解决确认HSE_VALUE确认RCC时钟倍频部分代码stm32f4xx_hal_conf.h#if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)18432000U) /*!< Value of the External oscillator in Hz */#endif /* HSE_VALUE */main.c/** * @brief System Cl原创 2021-08-27 19:50:21 · 3095 阅读 · 0 评论 -
STM32F103 PB3/PB4/PA13/PA14/PA5无法控制问题
一个简单的GPIO口无法控制,折腾了半天。没办法,翻下原理图,才发现这个IO口是特殊引脚。需要先禁用掉JTAG才能使用原创 2021-05-14 20:50:13 · 2266 阅读 · 1 评论 -
malloc和calloc
malloc和callocmallocmalloc定义 #include <stdlib.h> #include <malloc.h> /* * Funtion :memory allocation,动态内存分配,分配长度为size字节的内存块 * Argument :所需的内存块长度 * Ret...原创 2016-11-27 01:09:21 · 915 阅读 · 0 评论 -
简单的MCU加密方法,防破解、防抄袭、防山寨
前言目前MCU程序破解非常容易,最简单粗暴的方法就是直接将MCU内部flash整块copy走,再copy下你的硬件和结构,这样很快就能山寨出你的产品。这样很不尊重你的劳动成果,为了保护开发者的权益。目前有一个简单的MCU加密方法,就算抄袭者整块copy你MCU的flash,也无法正常运行你的程序。原理Created with Raphaël 2.2.0MCU初始化读取MCU本地flash的licencelicence通过tea算法解密成关键id关键id是否与MCU CPUID一致?进入正常程序串口接原创 2020-07-26 02:03:10 · 3100 阅读 · 2 评论 -
C语言判断float是不是NaN
#include <math.h>isnan(f)原创 2018-12-11 10:52:57 · 7515 阅读 · 0 评论 -
freeRTOS优先级
freeRTOS优先级,数值越大,优先级越高。优先级0是空闲任务,已经被占用,优先级最低。然而,不巧的是,ucos恰恰相反,数值越低,优先级越高。原创 2019-04-09 10:46:56 · 1922 阅读 · 1 评论 -
STM32两个APP跳转间,内存的重叠,冲突和影响
STM32两个APP跳转间,内存的重叠,冲突和影响前言目前,通用的做法,STM32的Flash分成两块App,一个BootLoader,一个应用App。原因因为,两个App是两个工程编译而成的,虽然Flash的地址划分开了,但是内存RAM没有分开。所以会导致某些问题。 看map文件就知道了。 问题App中定义的全局变量,通常刚上电后,如果没有对其赋值,全局变量一般是0...原创 2018-07-08 14:34:19 · 6080 阅读 · 13 评论 -
STM32 No Target connected四种解决办法
STM32 No Target connected四种解决办法供电板子一定要供电!ST-LINK是否接触不良确保ST-LINK跟板子连接完好按住reset点击download硬件和接线都没问题情况下,这时候可能是SWD的引脚被占用了,或者被禁用了。这时候ST-LINK自然无法通过SWD跟板子通信,所以才会提示No Target connected。所以,这时候按住reset,再点击download,再松开reset。原理就是在程序运行到SWD引脚占用之前,把新的程序烧录进去,抢个时间差。但是原创 2020-07-24 17:03:18 · 71421 阅读 · 36 评论 -
STM32 HAL HSE_VALUE
stm32f4xx.h默认25M外部晶振(HSE):而我们正常情况是接8M晶振,所以要做修改,否则将会出现串口乱码等奇怪问题#if !defined (HSE_VALUE) // #define HSE_VALUE (25000000U) /*!< Value of the External oscillator in Hz */ #define HSE_VALUE ...原创 2019-01-20 16:27:28 · 2776 阅读 · 0 评论 -
_sys_exit和_ttywrch,explicit type is missing (“int“ assumed)
报错..\SYSTEM\usart\usart.c(64): error: #260-D: explicit type is missing ("int" assumed) _sys_exit(int x) ..\SYSTEM\usart\usart.c(69): error: #260-D: explicit type is missing ("int" assumed) ...原创 2018-02-27 10:05:46 · 3026 阅读 · 1 评论 -
USART EVEN 串口偶校验
USART EVEN 串口偶校验原创 2017-01-10 16:45:47 · 4172 阅读 · 0 评论 -
printf Log打印封装
printf Log打印封装原创 2017-06-09 18:22:28 · 1872 阅读 · 0 评论 -
__HAL_AFIO_REMAP_SWJ_DISABLE
这个东西坑了一个晚上。程序download一次后,第二次download就提示no target connect,除非长按reset键,否则拿他没辙。搞得我以前程序哪里写错了,一度怀疑SystemClock_Config() ,时钟没配对。 果然,STM32Cube不是谁都能用的,还不如自己写。 在SYS里面的Debug子项可以选是否禁用jtag/sw。...原创 2017-08-12 01:03:36 · 8625 阅读 · 4 评论 -
STM32 JTAG 禁用
Hal库__HAL_RCC_AFIO_CLK_ENABLE();__HAL_AFIO_REMAP_SWJ_NOJTAG();//GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);原创 2017-10-01 20:54:10 · 3637 阅读 · 4 评论 -
UCOSII 多任务中断跑飞HardFault_Handler
很多人遇到这个问题都会想到是不是堆栈不够,就会跑去加堆栈。; Amount of memory (in bytes) allocated for Stack; Tailor this value to your application needs; <h> Stack Configuration; <o> Stack Size (in Bytes) <...原创 2017-10-02 10:54:14 · 4001 阅读 · 0 评论 -
ucos ii 软件定时器,delay函数
今天使用ucos ii软件定时器的时候,发现delay函数在里面不能正常使用了,具体什么原因,有待研究分析。。。原创 2017-12-08 11:42:30 · 1196 阅读 · 0 评论 -
UCOS III STM32 随机数 rand
lib_math.c文件typedef CPU_INT32U RAND_NBR;RAND_NBR Math_Rand (void){ RAND_NBR seed; RAND_NBR rand_nbr; CPU_SR_ALLOC(); CPU_CRITICAL_ENTER(); seed = Math_RandSeedCur原创 2017-10-25 11:08:21 · 2233 阅读 · 0 评论 -
USART RX 不上拉的后果
这两天写一个STM32的程序,其中USART1是要接一个串口屏做显示的,调试前期是还没用到显屏,就拿USART1做log打印。然后就发现了一个很怪异的现象。 USART1串口转usb接到电脑,程序运行稳定,没有异常。 USART1串口转usb不接到电脑,程序异常,容易跑飞HardFault_Handler。后来把USART1的RX IO初始化改了下,就好了。 原本是 GPI...原创 2017-12-05 14:47:55 · 14966 阅读 · 7 评论 -
STM32 使用printf打印串口信息
STM32 使用printf打印串口信息,注意要点原创 2016-11-26 19:51:24 · 3767 阅读 · 0 评论