- 博客(23)
- 收藏
- 关注
原创 elmos 524系列芯片笔记
芯片的工作工作原理:集成芯片Elmos524.03有发射回路和接收回路,手册有关的内部原理图,大致如下:芯片会产生固有频率的电压信号,信号通过引脚DRV1、2输出给外部压电陶瓷片,产生固定频率的机械波,也就是所谓的超声波,超声波遇到障碍物时会反射,反射信号经过AINS、D引脚进入芯片,在芯片内部先后经过GAIN放大,滤波然后进入比较器,滤波后的信号(signal)同预先设定的阈值(threshold)比较产生信号输出。此信号最终会连接MCU处理器,需要重点关注。基于这个内部的工作原
2024-08-28 11:58:10 611
原创 hardfault_handler处理方法 stm32
3.在Disassembly输入08开头格式的地址,定位出现问题的具体位置。1.读取PSP和MSP的值,通过和SP值进行对比,确认当前是指向PSP还是MSP。2.在Memory中打开存储位置,找到08开头格式的地址。/* 用于确认进入HardFault问题位置 */二、通过Keil调试问题定位问题位置。
2024-08-27 15:05:12 165
原创 stm32 cubeide bootloader 简单流程笔记
一 bootloader 区1.通过cubumx配置一个串口,一个led,来验证现象2.新建一个boot_boot的工程, STM32F103C8TX_FLASH.ld文件 修改/* 0x5000 */ 留20k用来做bootloader区3.添加app 地址定义4.写跳转app 函数5.最后调用jump_app(),下载进芯片。二 App 区新建一个stm32103 的app 工程。
2024-08-22 16:25:24 252
原创 stm32 BootLoader i IAP程序
3.用两个指针 IN OUT 标记结构体数组的位置,以此来判断是否接受完成。1.开一个一维数组【2048】来接收所有数据,防止数据太快来不及处理覆盖。2.定一个结构体数组,来存放上面一维数组中的起始地址&&结束地址。思路:用DMA加空闲中断来处理,进入空闲中断代表已经一帧数据已经接收完成。systick:是ARM内核相关的,所有厂商都通用,4.用END指针,防止数组越界。
2024-08-16 16:29:52 214
原创 C语言笔记
下面题目的意思是next距离S结构体的地址偏移量(10),但是在不同操作系统下默认的对齐方式是不同的,64位系统打印出来是16, 因为默认是8字节 32位系统打印出来是12,默认是4字节。可以用代码#pragma pack(4) 修改位4字节对齐。使用指针前一定要初始化,不然会变野指针。
2024-07-22 14:46:44 195
原创 LVGL笔记
注意,现在版本的lv_event_get_target()是下面这样了,返回值不再是lv_obj_t类型了,需要强制转换下lv_obj_t* list_btn =(lv_obj_t*) lv_event_get_target(e);
2024-07-20 10:37:56 113
原创 STM32单片机串口中断接收,上电第一帧数据为0x00,后面接收正常的解决办法
接收中设置的缓冲区不是同一个,则会出现上电(初始化)接收到第一个字节为0x00,但是之后都正常的情况。如果初始化打开中断的时候设置的缓冲区与。
2024-07-09 17:05:48 1107
转载 c语言 assert断言
编写代码时,我们总是会做出一些假设,断言(assert)就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。注意assert()是一个宏,而不是函数。
2024-07-01 10:55:22 35
原创 嵌入式C语言关键字含义
a.c 中的add方法只在a.c中起作用,b.c中的add方法没有加static,他的作用域是全局。表示作用域只在当前文件。
2024-06-20 16:57:15 306
原创 位运算小结
因为, mask只有位7为1, 0 | 1 = 1, 1 | 1 = 1, 所以可以设置位7为1, 而mask的其他位是0, 0 | 0 = 0, 0 | 1 = 1, 也就是不会影响其他位;因为, ~mask只有位7为0, 其他位都为1, 而 0 & 0 = 0, 1 & 0 = 0, 可以设置位7为1, 对于其他位, 0 & 1 = 0, 1 & 1 = 1, 没有影响.设置和获取某位需要一个掩码mask, 掩码的就是只有要操作的位为1, 其他位都为0的值.
2024-05-30 16:33:11 188
原创 STM32 CUBEIDE 常用设置
1)Project->Properties->C/C++ Build->Settings,然后在右侧选择Tool Settings->MCU GCC Compiler->Include paths,然后在右侧Include paths中点击添加图标,然后添加对应路径即可。1)Window->Preferences->General->Appearance->Cofors and Fonts,然后在右侧C/C++->Editor->C/C++ Editor Text Font,然后点击右侧的Edit…
2024-05-22 15:09:53 2195
原创 STM32定时器时间计算公式 理解(大白话)实现1ms、1s延时
Tclk:定时器的输入时钟频率(单位Mhz),通常为系统时钟频率或者定时器外部时钟频率。PSC(TIM_Prescaler):预分频值,是用来降低定时器时钟频率的参数。ARR(TIM_Period):自动重装载值,是定时器溢出前的计数值。Tout:定时器溢出时间。
2024-05-16 16:40:32 2772 2
原创 STM32 F103C8T6 PWM 与输入捕获
二、TIM4捕获上面产生的PWM。三、用串口来显示捕获到的情况。一、产生PWM50%占空比。6.2定时器溢出的回调函数。六、重写两个中断回调函数。6.1 捕获的回调函数。
2024-05-11 16:20:53 572
原创 STM32 HAL库的常用库函数整理
产生中断线路目的是把输入信号输入到 NVIC(中断控制器,处理中断的),进一步会运行中断服务函数,实现功能,这样是软件级的。返回值: HAL_StatusTypeDef , HAL 状态( OK , busy , ERROR , TIMEOUT )返回值: HAL_StatusTypeDef , HAL 状态( OK , busy , ERROR , TIMEOUT )返回值: HAL 状态( OK , busy , ERROR , TIMEOUT )HAL_UART_Transmit_IT();
2024-05-10 14:52:33 2115
原创 TortoiseGit小乌龟使用方法笔记
一、在没有创建仓库的文件夹右键,选择Git在这里创建版本库。四、选择管理,然后把gitee上仓库地址填写到URL里。二、创建完版本库后,再次右键,选Git提交。
2024-04-27 11:17:10 265
原创 MVC+VUE.JS+MUSEUI
前端代码:@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>MuseUI</title> <script src="~/Content/vue.js"></script> <script sr
2017-09-18 14:27:19 2139 2
原创 MVC+vue.js+iview
项目需要,最近在学vue.js,领导决定用iview这个ui,于是写了这个基于MVC的例子。 前端代码<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>iview example</title> @*<link href="~/Content/iView/iview.css" rel="styleshee
2017-08-30 14:27:07 3259 1
stm32 输出pwm同时捕获这个pwm并计算高电平时间、低电平时间、周期、占空比
2024-05-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人