STM32
8421plus
嵌入式工程师一枚,不定期分享 嵌入式 软硬件 学习心得,欢迎大家一起学习交流
展开
-
lvgl 页面左右滑动处理
【代码】lvgl 页面左右滑动处理。原创 2023-11-21 17:59:52 · 1106 阅读 · 0 评论 -
h750错误记录 卡死 ,18b20数据读取失败 解决办法
由于hal库没有 微秒延时,故采用nop( )函数来进行延时,死活读不到温度数据,一度怀疑硬件问题,开发板验证测试就是快。经过多块测试版对比,发现就是nop出问题,us几十的很准,神坑。这种us延时还是用抵达定时器更准确。原创 2023-10-25 18:08:50 · 400 阅读 · 0 评论 -
04 hal cube 串口配置经供参考
3.重定向 printf。原创 2023-10-12 17:58:39 · 79 阅读 · 0 评论 -
01 时钟配置初始化,debug
2.f0外部时钟配置。原创 2023-10-12 17:42:12 · 111 阅读 · 0 评论 -
mcu并口输出程序兼容所有库类型
原创 2023-09-27 17:13:55 · 57 阅读 · 0 评论 -
STM32H750 HAL CUBEMX 时钟失败及死机无法下载问题解决
STM32H750 HAL CUBEMX 时钟失败及死机无法下载问题解决原创 2023-09-11 16:17:46 · 401 阅读 · 0 评论 -
stm32 hal中断收发
【代码】stm32 hal中断收发。原创 2023-08-11 19:03:58 · 80 阅读 · 0 评论 -
DS18B20-STM32温度读取
DS18B20数据读取原创 2023-06-26 14:40:27 · 586 阅读 · 0 评论 -
STM32 标准库 任意长度收发
【代码】STM32 标准库 任意长度收发。原创 2023-06-21 16:37:47 · 248 阅读 · 0 评论 -
IIC协议详解
iic 协议与实现原创 2022-10-06 15:34:40 · 2410 阅读 · 0 评论 -
版本比对实现
#include <stdio.h> #include <string.h> char a[]={"1.1.110"}; char b[]={"1.1.70"}; char c[]={"1.2.11"}; char d[]={"1.2.100"};int VersionCompare(char * version1, char* version2){ int index1 = 0;//用来保存比较到了第几个。 int index2 = 0;原创 2022-03-31 17:02:25 · 273 阅读 · 0 评论 -
单片机物联网升级方案
单片机物联网远程升级方案,直接上干货一般消费级产品,为了性价比,选用的mcu,一般资源很有限,以stm32103c6t6为例 ram 20k rom64k,主要功能实现如下MCU通过BOOT程序跳转到App主程序。BOOT程序实现引导跳转功能,App实现主程序业务功能。BOOT和App程序均存储在MCU内部Flash里面。在keil中地址设置例如下图,地址必须连续,boot地址的结束是app程序的起始地址,必须预先规划好程序空间大小,比如boot0x8000,32768字节,为32k,以此类推。原创 2021-12-31 11:48:23 · 2835 阅读 · 0 评论 -
2021-09-24 STM32 HAL库 定时器中断
//定时时间t=(Prescaler +1)*(Period +1) /clock(定时器时钟评率)` MX_TIM3_Init(); HAL_TIM_Base_Start_IT(&htim3); //(必须要,启动定时器中断)static void MX_TIM3_Init(void){ /* USER CODE BEGIN TIM3_Init 0 */ /* USER CODE END TIM3_Init 0 */ TIM_ClockConfigTypeDef s原创 2021-09-24 18:17:13 · 418 阅读 · 0 评论 -
stm32常用printf函数支持接口(标准库与hal库)
stm32常用printf函数支持接口(标准库与hal库)/hal库***************/int fputc(int ch,FILE *f){ HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);//hurat1为串口号,根据自己情况进行选择 return ch;}/////////////////////////////////////////////////////////////////////////原创 2021-09-14 09:29:48 · 475 阅读 · 0 评论 -
modbus 调试工具之modbus slave与modbus poll
1.正常使用基本配置2.激活码5455415451475662 slave5A5742575C5D10 poll可以用虚拟串口直接搭建测试原创 2020-06-01 16:07:23 · 9763 阅读 · 4 评论 -
关于cube-mx使用
1. keil5编译速度慢的问题: 更改更高版本输出即可2.下载到mcu的代码无法debug--------必须设置debug选项为--seria lline3.关于mx-cube生成的代码接收出错问题使用该函数HAL_UART_Receive()时,发送和接收的数据长度必须相同,否则发生多次接收或数据发送导致数据重叠,以致错误发生。 使用串口收发数据测试时,不能进行太耗时的任务...原创 2020-03-09 02:12:23 · 358 阅读 · 0 评论 -
st32的mpu6050调试 模拟iic实现
1.GPIO模式设置:首先经历了读不出数据,更改iic函数没有实现。找到了能用的iic硬件版作为参考。折腾了好久,感谢网友的经验,时间没有白费终于弄好了。(用51开发板验证模块是否能正常工作)2.地址设置:ad接地或悬空,iic设备:0x68(加过读写位的,七位地址必须进行八位转换)。写加0,读为0x68+1.3.标准iic协议 is MUST4.读出的数据不变说明时序不对。我...原创 2019-09-26 00:39:32 · 752 阅读 · 2 评论 -
软件模拟iic24c02协议实现:
软件模拟iic实现://iic时序#if 1void IIC_Start(){ SDA_OUT(); IIC_SCL=1; IIC_SDA=1; delay_ms(5); IIC_SDA=0; delay_ms(5);}void IIC_Stop(void){ SDA_OUT(); IIC_SCL=1; IIC_SDA=0; delay_ms(5); ...原创 2019-06-04 19:01:43 · 695 阅读 · 0 评论 -
STM32之知其然,知其所以然
STM32之知其然,知其所以然/*the core document(.s)**/; Reset handler //复位处理Reset_Handler PROC EXPORT Reset_Handler [WEAK] // IMPORT SystemInit ...翻译 2019-01-10 17:16:46 · 355 阅读 · 0 评论 -
STM32之TIMER基本定时器应用
STM32之TIMER基本定时器应用定时器溢出时间 Tout= ((arr+1)*(psc+1))/Tclk相关结构体typedef struct{ uint16_t TIM_Prescaler; /*!< 计数分频值 */ uint16_t TIM_CounterMode; /*!< 计数模式 */ uint16_t...翻译 2019-01-11 17:03:12 · 777 阅读 · 0 评论 -
关于STM32函数定义
关于STM32函数定义1. *(__IO uint8_t *) CIR_BYTE3_ADDRESS#define __IO volatile /*!< Defines 'read / write' permissions 声明 volatile ,目的:使编译器不优化该变量。从相应变量内存中取数。 ...原创 2019-01-11 17:09:55 · 3901 阅读 · 0 评论 -
stm32之DMA
DMA直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作通道配置过程下面是配置DMA通道x的过程(x代表通道号):1. 在DMA_CPARx寄存器中设置外设寄存器的地址。发生外设数据传输请求时,这个地址将是数据传输的源或目标。2. 在DMA_CMARx寄存器中设置数据存...翻译 2019-01-11 18:38:22 · 314 阅读 · 0 评论 -
STM32之ADC应用(基于F1库函数)
内部12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。// ADC 转换完成中断服务程序...翻译 2019-01-11 22:29:41 · 978 阅读 · 0 评论 -
stm32时钟及其滴答定时器
stm32时钟设置(F1其余型号同理): Reset handlerReset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit LDR...翻译 2019-01-07 16:43:21 · 891 阅读 · 0 评论 -
TIMER之pwm应用
TIMER之pwm应用//TIM3 PWM部分初始化//PWM输出初始化//arr:自动重装值//psc:时钟预分频数 //PB5,TIMER3_CH2void TIM3_PWM_Init(u16 arr,u16 psc){ GPIO_InitTypeDef GPIO_InitStructure; //GPIO 结构体初始化 TIM_Tim...翻译 2019-01-13 15:45:52 · 1199 阅读 · 0 评论 -
STM32之GPIO操作(库函数版)
1.在stm32f10x_gpio.h文件中首先GPIOD定义:#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \ ((PERIPH) == GPIOB) || \ ((PERI...原创 2019-01-08 16:33:26 · 1403 阅读 · 0 评论 -
stm32中断配置(NVIC)
内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC)NVIC优先级结构体定义:typedef struct{ uint8_t NVIC_IRQChannel; /*!< Specifies the IRQ channel to be enabled or disabled */ u...原创 2019-01-08 20:22:18 · 1194 阅读 · 0 评论 -
STM32之开发利器(USART)
STM32之串口(USART)// 支持printf函数, 不需要选择use MicroLIB #if 1#pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE{ int handle;};FILE __stdout;...翻译 2019-01-09 18:48:25 · 293 阅读 · 0 评论 -
C语言的指针在32位单片机上的应用
C语言的指针应用(int*)(0x400ff0d4) 代表强制转换地址0x400ff0d4为int型32位指针。*((int*)(0x400ff0d4)) 代表取地址指针的内容所以有 接下来看看C语言结构图的深入应用1.首先生成GPIO_MEMapPtr的结构体指针变量2.用define 定义结构体指针起始地址 为 PTA_BASE_...原创 2019-02-15 15:24:02 · 785 阅读 · 0 评论 -
cotex单片机寄存器(cm3为例)
ARM单片机寄存器列表:堆栈指针 R13R13 是堆栈指针。在 CM3 处理器内核中共有两个堆栈指针,于是也就支持两个堆栈。当引用 R13(或写作 SP)时,你引用到的是当前正在使用的那一个,另一个必须用特殊的指令来访问(MRS,MSR 指令)。这两个堆栈指针分别是: 主堆栈指针(MSP),或写作 SP_main。这是缺省的堆栈指针,它由 OS 内核、异常服务...原创 2019-11-03 22:50:02 · 1824 阅读 · 0 评论 -
Cortex-M3的低层编程
Cortex-M3的低层编程不论如何,时间宝贵。我们应该以 C 来实现程序的大框架,而本着好钢用在刀刃上的原则来使用汇编,因为只有在不多的特殊场合是非使用汇编语言不可的,它们是:无法用 C 写成的函数,如操作特殊功能寄存器,以及实施互斥访问。 在危急关头执行处理的子程(如,NMI 服务例程)。 存储器极度受限,只有使用汇编才可能把程序或数据挤进去。 执行频率非常高的子程,...翻译 2019-03-18 19:49:42 · 363 阅读 · 0 评论 -
free_rtos系统基本配置
工程文件列表如图:free_rtos系统文件:(在include文件夹内含有rtosconfig.h文件)CM3文件夹:是对stm32f1系列单片机内核支持专用。include文件夹主要是函数头文件,使用时必须包含。src是ree_rtos主要系统函数文件。FreeRTOS的官网是www.freertos.org,可以下载FreeRTOS的source源码。...原创 2019-04-10 15:24:35 · 427 阅读 · 0 评论 -
FreeRTOS系统的头函数配置文件
FreeRTOS系统的头函数配置文件(必须)搞了很久都一直报错,报各种错误,有时候文件不要随便包含,会报改不掉的错,首先注意屏蔽stm32f...it.h文件里的svchandle,systick_handle,pendsv_handle.最后发现是这个头函数配置的不对,在此分享一下,希望对大家有所帮助。/* FreeRTOS V9.0.0 - Copyright (C)...翻译 2019-04-11 15:07:55 · 358 阅读 · 0 评论