
STM8/STM32
STM8/STM32单片机相关
PWRJOY
如对某些文章有见解/困惑,欢迎互相交流进步。
展开
-
Keil报错_Error:CreateProcess failed,Command:‘xxx\fromelf.exe‘
2、当你需要生成bin文件时,修改此电脑安装keil时正确的fromelf.exe路径。(对于我,只是修改盘符为D即可)下面链接是我之前写的,关于如何使用keil生成bin文件的说明,复习。1、当你不需要生成bin文件时,可以选择不执行这个命令。错误原因:fromelf.exe路径错误,无法执行命令。发生情景:编译从另一个电脑拷贝的代码时。原创 2023-11-27 15:00:51 · 2771 阅读 · 0 评论 -
stm32f4_奇怪的bug_串口数据错乱,一个串口收到另一个串口的数据
接收IO口上拉改为无上下拉,串口4就正常了。因为是时不时出现,考虑可能只是降低bug复现概率,所以运行了一晚上,都是正常的,大概两万次吧,一次都没出现了,但是:原创 2023-09-07 18:11:14 · 1908 阅读 · 0 评论 -
iar_跳转错误,提示包含错误的路径
换电脑了,改文件夹路径了,改文件名称了,但是跳转的时候仍然按照原来的路径去搜索,所以找不到报错。先Clean清除掉原有的,然后再Make编译一次。原创 2023-08-21 10:35:09 · 1291 阅读 · 1 评论 -
stm32_ADC电源、通道、工作模式
2.2.1、规则/注入通道和上面19个通道的关系看框图,不管是规则通道和注入通道,都是19通道中经过复选其中的1个通道。2.2.2、1次只能转换1个通道,如何利用多个通道?按照事先配置的顺序去执行,比如你想转换ADC1_IN2、ADC1_IN10、ADC1_IN5,那么就是这3个通道轮流,就可以检测到多个通道了,这就是序列。原创 2023-08-16 18:56:15 · 4185 阅读 · 0 评论 -
stm32_断点调试无法进入串口接收中断
先说结果,可能是stm32调试功能/keil软件/调试器(试过STLINK和JLINK两种)的问题,不是代码;原创 2023-08-09 12:24:40 · 9946 阅读 · 4 评论 -
stm8_独立看门狗配置顺序错误导致不断复位
按照手册中的表格,看门狗的超时时间应该是1s,但是在这1s中多次喂狗也不断复位,然后排查到是配置顺序的问题,先开启开门狗,再配置寄存器可以解决。在配置stm8独立看门狗的时候,先设置分频、重载寄存器,然后启动看门狗,发现不断复位。想要配置好再启动的想法,只是一厢情愿,指单方面的愿望或不考虑客观实际情况的主观意愿。Once enabled,使能后,所以,先使能配置才有效。原创 2023-07-31 14:04:30 · 695 阅读 · 0 评论 -
stm8s003_切换时钟流程分析、配置外部晶振(库函数调用)
疑问,如果外部晶振开启失败了,又关闭了旧的时钟,会不会不能往下运行?验证:把外部晶振取下,模拟开启失败的情况。不管是关闭旧时钟CLK_CURRENTCLOCKSTATE_DISABLE,还是不关闭旧时钟CLK_CURRENTCLOCKSTATE_ENABLE,程序都能继续往下执行,并且时钟频率为旧的时钟频率。注:如果在开启外部晶振前,把内部时钟的分频调成1(16MHz),那么外部晶振开启失败后时钟频率还是16MHz;设置这个用处就是,原创 2023-07-25 16:31:04 · 2095 阅读 · 0 评论 -
STM32F4_HAL库_串口阻塞/中断/DMA三种方式发送数据的配置
串口阻塞发送的意思就是,发送一段数据,在没有发送完所有数据之前,一直停留在此发送函数(可设定阻塞时间),这个过程中会阻塞别的程序运行;HAL库的配置分为两个层次,一个是HAL库内部调用的、与MCU硬件相关的初始化xxx_MspInit,一个是我们外部调用的初始化xxx_Init;这两个初始化函数配置完,就可以进行阻塞式的串口发送了,很简单。HAL_UART_MspInit,MCU硬件初始化,需要开启RCC串口时钟、RCC的GPIO端口时钟、配置GPIO的模式;(还有个反初始化HAL_UART_MspDeIn原创 2022-12-04 14:45:11 · 6025 阅读 · 1 评论 -
HK32_UID中获取芯片唯一ID相同的问题
当然也有可能是手册没错,芯片出厂的时候写内部flash的时候把地址搞错了吧,不过最简单的就是改手册,毕竟已经有芯片流入市场,像我这样有用到UID功能的产品,如果下一批芯片又改回来,在不知道的情况下,有人要裂开。手册对于以前的我来说是权威,现在想想手册也是人写的嘛,实践才是真理,手册只是参考的重要方向,如果坚信手册是完全正确的,把读不出来的问题转移到代码上就会充满疑惑,不要太笃定任何事来给自己设限。对于遇到的问题,除了自己找资料和多试错之外,要学会利用资源和专业的人联系,能更快的解决问题;...原创 2022-08-12 13:43:41 · 2392 阅读 · 0 评论 -
STM32_找到导致进入HardFault_Handler的函数
HardFault_Handler中while(1)处打断点打开Call Stack + Locals 窗口,右键HardFault_Handler,选择Show Caller Code就会跳转到进入HardFault_Handler的函数了;原创 2022-07-25 09:48:58 · 593 阅读 · 0 评论 -
STM32F030外部中断配置
STM32F030芯片,PC13为外部中断触发,下降沿的配置;注意开启SYSCFG时钟;原创 2022-07-13 15:22:29 · 4230 阅读 · 1 评论 -
F030使用定时器中断卡死的问题
初始化定时器,配置NVIC,然后运行,就卡死了。原代码如下:2、分析及解决要看下是哪一段代码导致的,所以先是注释了整个定时器初始化部分,正常,所以问题定位要定时器初始化。根据参数初始化定时器,感觉没什么问题,写错了也不至于卡死,NVIC配置的话由于涉及到中断,所以可能是中断这部分的问题,注释了NVIC_Init正常了,所以问题就在定时器中断这部分的配置。灵光一现,想到了个错误(其实不是哈哈哈),main函数里没有设置NVIC分组,然后发现F030就没NVIC分组这回事。然后,根据这个现象查找原创 2022-07-13 10:39:05 · 2329 阅读 · 1 评论 -
让Keil5也可以开发C51(和Keil4兼容问题)
背景Keil5针对ARM,我是用来开发STM32;但是又需要Keil4 来开发C51。同时安装Keil4和Keil5的话,Keil5是能打开STM32的工程,但是用Keil5不能开发Keil4的工程,而且用Keil4打开工程会很卡。解决安装并注册好Keil4和Keil5.在Keil4安装目录下,把C51文件夹整个复制到Keil5安装目录下。在Keil4安装目录下,把UV4文件夹下的文件全部复制,粘贴到Keil5安装目录下的UV4文件夹下,同名的文件不要替换,直接跳过。在Keil4安装目录下,原创 2020-08-13 20:14:37 · 2945 阅读 · 0 评论 -
Keil_查看函数定义时无法跳转
通常是刚打开工程,没有编译过导致的,不过今天全部编译了还是不行,仔细看看弹窗的提示,照着操作下把“Browse Information”打开再编译一次就行了。原创 2022-04-10 09:56:31 · 1114 阅读 · 0 评论 -
C51中对char、int、long、float、double数据类型所占字节测试
在Keil中对C51的数据类型所占字节测试用函数sizeof(),加上keil的软件仿真功能。数据类型字节数char1int2long4float4double4原创 2020-08-13 14:53:16 · 4348 阅读 · 3 评论 -
STM32的Flash和SRAM
1、存储器存储器分为易失性和非易失性。易失性:掉电数据会丢失,通常指RAM;RAM分为SRAM、DRAMSRAM:静态RAM,只要上电数据就不会丢失; DRAM:动态RAM,需要每隔一段时间刷新数据,否则数据会丢失;非易失性:掉电数据仍然可以保存,通常指ROM;最初的ROM只读或可写一次然后只读; 后来,发展出电可擦除即EEPROM,从此“ROM只读存储器”只是名义上的只读,实际就是可读可写。EEPROM可对指定字节进入擦除写入。 再后来,FLASH闪存出现了,以块为单位擦除原创 2022-03-31 00:07:24 · 5188 阅读 · 0 评论 -
STM8_AD采集(查询方式、中断方式)
一、查询方式两个函数,先初始化Init_AD,然后就可以Get_AD开始转换、等待读取;1.1、初始化Init_ADvoid Init_AD(){ GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT); //设置IO为悬浮输入 ADC1_DeInit(); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,ADC1_CHANNEL_2,原创 2022-03-21 13:41:11 · 2741 阅读 · 0 评论 -
使用CubeMX配置TIM+DMA的方式驱动WS2812
一、CubeMX配置1、配置时钟 、配置STLINK下载方式2、配置定时器,设置DMA二、驱动WS2812生成工程后,要添加驱动代码,主要就是把WS2812各个灯珠的颜色准备好,然后开启DMA,等传输完毕之后停止DMA.#define WS2812_NUM 10#define FRAME_BYTES 24*WS2812_NUM+4//传输一次WS2812灯带数据格式typedef struct{ uint16_t head[3]; ...原创 2021-07-31 15:56:25 · 1038 阅读 · 0 评论 -
STM32CubeMX下载安装、配置基本工程(时钟)、用HAL库函数点灯
1、STM32CubeMX下载安装从官网下载就可以了,版本最新,而且也挺快的呢,就是要用邮箱注册一下。下载地址选最后一个Windows的,直接Get Software.安装很简单,跟着向导一步步来就好了,下面是安装完成的界面。选择从MCU建立工程,开始吧。2、用CubeMX生成基本工程(配置时钟)第二部分就是用CubeMX生成一个基于STM32F407ZG的基本工程,配置了时钟。用的是手边的开发板,正点原子探索者。2.1、选择MCU型号2.2、选择时钟来源如图,HSE、LSE两原创 2021-06-16 23:23:46 · 1555 阅读 · 3 评论 -
STM32F103C8T6的高低电平范围
根据STM32F103C8T6的数据手册,5.3.13 I/O port characteristics,各种情况下高低电平阈值范围如下。注释部分为VDD带入3.3V的具体值。原创 2021-05-27 16:43:19 · 18504 阅读 · 0 评论 -
STM32的各数据类型
数据类型字节数char1short2int4long4float4long long8double8long double8原创 2020-12-14 09:47:12 · 1293 阅读 · 0 评论 -
STM32F4_1_GPIO输出
0、反省不想只是略懂的状态,F4的开发板我有一块,上面的资源我用过简单的而已,用过也只是停留在表面,时间稍稍一走,记忆面目全非。反正视频也有,例程也有,到处都是资料,为什么不好好学一下呢?1、代码很简单,就是控制LED的亮灭。不过对比了一下不同配置的效果,分别是“推挽输出”、“开漏上拉”,“开漏下拉”。//初始化LEDvoid LED_Init(){ GPIO_InitTypeDef GPIO_InitStruct; RCC_AHB1PeriphClockCmd(RCC_AHB1Per原创 2020-11-16 23:05:17 · 366 阅读 · 0 评论 -
Systick中变量不能自增的问题
今年刚毕业,经验和能力都有限,STM32我倒是可以用,但是自己觉得吧,也只是皮毛而已,未来我倒是有些规划,但是个人比较抑郁,时时奔溃,我觉得这样不好。一、背景公司大部分开发用的是STM32,但是也有新唐的M0芯片和赛元的芯片。有一个公司的程序,用的是新唐的M0芯片,本来呢是可以用的,现在出问题了,问题就定位在标题——Systick中的变量不能自增,导致这个变量在别处调用时出错,进而卡死。二、最终解决在定义变量前加上关键字"volatile"把这个问题解决确实费了一番功夫。三、关于vol.原创 2020-11-06 10:21:03 · 402 阅读 · 0 评论 -
STM32-不同容量芯片工程移植
STM32-不同容量芯片工程移植背景手上有的例程是STM32F103RCT6的,现在有一块板子上用的是STM32F103RBT6。区别在于一个是C,一个是B。C代表256K的Flash,属于大容量。B代表128K的Flash,属于中容量。STM32F103RCT6基础型基础型引脚数容量封装温度STM32型号说明具体见“****”STM32容量说明小容量Flash≤32K中容量64K≤Flash≤128K大容量原创 2020-08-05 19:09:57 · 1757 阅读 · 0 评论