- 博客(45)
- 收藏
- 关注
原创 VS Code开发STM32F4xx jlink接口swd模式
下面的代码(已验证),只作为参考,不同情况的更改参照文章末尾链接。: (需要电脑jink连接STM32)
2024-04-26 00:14:40 249
原创 【无标题】
TARGET:最终生成的目标文件名,这里是。DEBUG:是否开启调试模式,设置为1表示开启。OPT:编译优化选项,这里设置为-Og,表示进行基本的优化。BUILD_DIR:构建目录,所有生成的中间文件和最终文件都放在这个目录下。C_SOURCES:C源文件列表。:汇编源文件列表。PREFIX:交叉编译工具的前缀,这里是。CCASCPSZ:分别对应C编译器、汇编器、对象拷贝器和大小查看器。HEXBIN:将ELF文件转换为HEX和BIN格式的命令。
2024-04-15 15:15:48 998
原创 STM32 M3内核寄存器概念
这样做是为了在子程序执行期间保存这些寄存器的原始值,防止子程序修改这些值影响到调用它的代码。在汇编语言中,函数或子程序通常有一个标签来标识它们的开始,这样其他代码可以跳转到这个标签来执行该函数的代码。LR 在子程序返回时的唯一用处就是提供返回地址,在 返回后,先前保存的返回地址就没有利用价值了,所以。注意:不管在寄存器列表中,寄存器的序号是以什么顺序给出的,汇编器都将把它们升 序排序。指令压入堆栈的寄存器的值。或写作 SP) 的地址寄存器,会自动被调整, 以避免后续的操作破坏先前的数据。
2024-04-02 23:00:04 730
原创 STM32 can通信部分函数注释
can初始化(寄存器操作):uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct)配置CAN接收滤波器:void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct)CAN模式初始化函数:u8 CAN1_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)
2024-03-31 00:53:47 470
原创 eplan部件清单的生成及自建部件库简介
举例,下图有急停按钮符号,要把急停按钮显示在清单里.第一步,已经有了符号,符号有设备标识符.第二步就是。找到部件库文件夹后,复制粘贴,重命名,然后点击上图的三点菜单(放再上图是同样操作是找路径)找到部件库文件夹,在同路径下复制粘贴部件库文件,重命名(有教程点小太阳,)有教程点小太阳新建数据库,原数据库的内容会丢失,谨慎。.出现了标识符为S2的急停按钮,数量为1。,完成后部件数量自动为1.,如果图纸有改动,点左图。下面是对部件的简易补充,,第三部是在符号属性里。部件添加的宏怎来的?
2024-03-29 00:15:06 296
原创 eplan(自建)符号库不同路径项目下的转移
首先要知道是在之前哪个项目下自建的符号,打开其项目文件名的.edb文件夹,复制其符号库文件到当前项目.edb文件夹下.之前有个项目自建了符号库和符号,后来想用到其他项目(两个项目不在一个文件路径),插入符号,找不到符号库。将项目文件(elk文件)和与项目同名的edb文件复制到EPLAN项目库地址即可。项目文件需放置于EPLAN项目库内,才不会出现此类报错。点击箭头(向左复制),关闭主数据同步。再插入符号时找到了符号库。
2024-03-26 10:20:40 206
原创 eplan显示连接定义点和标识符关联参考基础
点击图标后,再点击要定义的线.默认显示为空,为了直观改为小斜线编辑显示线径文本1确认线径文本显示格式2.填写数字,选择单位。
2024-03-18 20:57:05 760
原创 eplan图框模板
eplan图框文件:链接:https://pan.baidu.com/s/1LauHcd6_cA0NFozs33_Vxg?光标会自动到(0,0) 直接点击左键即移动基点.把图框左上角对齐基点。选中移动基点后(不放基点),点输入坐标.选中电气坐标,x,y填0.A4纸大小:210mm×297mm。
2024-03-18 16:14:36 386
原创 eplan新建符号及符号向量(实现新建符号旋转)
在符号向量B的页面插入同样的原符号(Ctrl+移动鼠标------编辑完成后关闭向量A B页面,弹出下面画面点击"是"这时会打开一个空白页面,新建的符号在这里编辑。(也可自己画,最关键是自动引出线要加中断点)选择变量A,写符号名(英文字母),点确定。
2024-03-16 11:55:32 539
原创 STM32F4串口1波特率相关时钟,及寄存器配置
在main中调用的:usart_init(9600);/* 串口初始化为波特率 */(336, 8, 2, 7);/* 设置时钟,168Mhz *///8*336/8/2=168。系统时钟,总线寄存器配置,及。
2024-03-08 18:20:18 433
原创 #define MODIFY_REG(REG, CLEARMASK, SETMASK)
(~(CLEARMASK)):然后,使用按位非操作(~)来反转CLEARMASK中的所有位,并通过按位与操作(&)来清除REG中由CLEARMASK指定的位。#define FLASH_CR_SER_SET_MASK (1
2024-03-06 16:25:46 457
原创 结构体指针,宏 访问寄存器
定义一个宏,将基地址(0x40023800)转换为 RCC_TypeDef 类型的指针。定义 RCC 模块中寄存器的结构体(基于。包含并对应多个寄存器地址。
2024-03-06 11:23:25 325
原创 结构体嵌套
(串口初始化实际使用: usart_init(9600);/* 串口初始化为波特率 */)在C或C++编程中,结构体嵌套是指一个结构体内部包含了另一个结构体的实例作为其成员。
2024-03-05 16:13:13 381
原创 typedef定义结构体--声明结构体变量--指向该类型的指针
结构体的指针(函数原型:HAL_StatusTypeDef。---使用新类型名来声明一个变量。来定义一个新的结构体类型。---(配置时钟系统),需要的参数为:指向。
2024-03-05 14:27:42 433
原创 MicroPython的utime.ticks_diff,for i in range,及运算顺序
如果两个时间戳之间的差值超过了滴答数的范围,那么计算出的结果可能会出现错误。如果表达式中有多个运算符,那么根据这个优先级列表,操作将按照从高到低的顺序执行。即使没有使用括号,你也需要了解这些优先级,以确保代码按照你期望的方式执行。函数生成的数字序列,每次循环将序列中的一个数字赋值给变量。的值将依次是 0, 1, 2, 3, 4。的值将依次是 1, 2, 3, 4, 5。# 执行您想要在条件满足时执行的代码。来计算它们之间的差值,我们可以得到代码的执行时间。的值将依次是 0, 2, 4, 6, 8。
2024-03-04 17:03:12 412
原创 STM32F1XX时钟树部分概念介绍
滴答定时器主要用于操作系统级别的任务调度和时间管理,提供固定频率的中断。一般定时器则提供了更广泛的定时和信号生成功能,适用于多种应用场合。STM32自由运行时钟 (FCLK)STM32的自由运行时钟(Free Running Clock,简称FCLK)是Cortex-M3内核的一个特性。它是内核的一个独立时钟源,不依赖于系统时钟(HCLK)或其他时钟源。当系统时钟(HCLK)停止或关闭时,自由运行时钟(FCLK)仍然继续运行。这使得处理器在休眠或低功耗模式下仍能够响应中断和其他关键事件。
2024-02-29 13:17:06 369
原创 STM32程序(移植)中头文件的路径
在C和C++编程中,当我们在源文件中包含(或称为“引入”或“导入”)一个头文件时,编译器需要知道这个头文件的位置。通常,编译器会在几个预定义的目录(如系统目录、项目的include目录等)中查找这些头文件。但有时,这些头文件可能不在这些标准目录中,或者可能有多个同名文件,并且你想确保包含的是正确的一个。:通过指定完整的路径,你可以确保即使系统目录或其他地方有同名的头文件,你的代码也会引用正确的一个。指令中包含路径,你可以更精确地控制编译器查找头文件的方式,并确保引入的是正确的文件。指令中看到路径的原因。
2024-02-26 12:27:35 660
原创 CH340串口Win11下无法打开问题解决
链接:https://pan.baidu.com/s/13iANVbFx7EI8RvApyLe8gw?此测试Win11 usb转9口针串口线 用串口助手打开串口有效,解决了原驱动串口助手无法打开串口。
2024-02-23 19:34:17 417 2
原创 esp32板子micropython代码--输入信号限时等待处理
语句放在一个能够同时跳出两个循环的上下文中。,要么从上次信号发生到现在的时间已经超过或等于1500毫秒。只有当这两个条件中的任何一个满足时,这个循环才会继续。如果条件满足,执行其他代码并退出循环。当内层循环的条件满足时(即。到现在的时间超过或等于1500毫秒),执行一些代码(在这里用。语句会执行,导致退出内层循环。然而,由于外层循环是无限循环(),程序会立即返回到外层循环的开始,并再次进入内层循环。循环,在循环体内检查相反的条件。在满足内层循环的条件时完全退出两个循环,需要将。和一个内层循环,其条件为。
2024-02-03 17:26:04 361
原创 CAN过滤器配置以及常见问题总结
此时CAN_FxR0和CAN_FxR1中的都是要匹配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。那么32ID该怎么配置呢,此时不是简单像上述16位模式左移五位实现,具体参考如下(我们以32位列表为例,下面配置则通过的ID为0x12345678),至于为什么这样移位这里不再赘述,想知道的具体可看下寄存器手册。掩码模式的过滤器计算逻辑为:其实就是掩码位与ID位对应,掩码位为1的通过,掩码位为0的随意。所有的过滤器是并联的,即一个报文只要通过了一个过滤器,就是算是有效的。
2024-01-31 21:41:06 740 1
原创 can通信数据帧解析
组成,IDE位为显性0,r0位也为显性0,DLC位为4个位的长度用来表示传输数据的字节长度,标准帧及扩展帧传输的数据字节均为0~8个字节。的ID段分为两段,第一段为11位与标准帧一样,SRR及RTR位,作用与标准帧的RTR一样(默认是显性0,如果为隐性1则表示此帧为远程帧),有11位的用来保存信号的ID,RTR为远程帧位(数据帧时为显性0,如果为隐性1时则表示此帧为远程帧),总共12位。总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。帧结束,由7个连续的隐性位组成。
2024-01-31 17:09:05 392
原创 三菱Fx系列PLC串口通信解析
发送读指令的获取过程如下: 开始字符STX:02H 命令码CMD(读):0(其ASCII码为30H) 寄存器X10~X17的位地址为0081H(其ASCII码为30H 30H 38H 31H) 字节数NUM:1(其ASCII码为30H 31H) 结束字符EXT:03H 累加和SUM:30H + 30H + 30H + 38H + 31H + 30H + 31H + 03H = 15DH 累加和超过两位数时,取它的低两位,即SUM为5DH,5DH的ASCII码为35H 44H。否则返回NAK码(15H)。
2024-01-30 21:07:35 1568 5
原创 与freertos相关delay.c浅析
不管是什么系统,运行都需要有个系统时钟节拍。xTickCount就是FreeRTOS的系统时钟节拍器。
2024-01-30 16:17:00 297 1
原创 VSCode开发STM32快速搭建开发环境零基础
1.下载安装软件VScode,STM32CubeMX,跨平台的C和C++编译器MinGW,编译ARM内核程序的软件gcc-arm,调试软件OpenOCD.-----------------第三步。这一段printf源码在最底。
2024-01-22 20:32:30 506
原创 micropython 双组按钮电机手动控制正反转实验源码
学习中,/两个电机,两个正反转按钮,一个急停按钮./按钮对应一个电机的正反转:按下不松就正转,松开即停.再按就是反转,一个按钮可以循环实现正反转.主要是急停用到了外部中断,两个电机控制用了多线程.
2024-01-21 23:17:02 375 1
原创 IO口与中断线映射:SYSCFG_EXTILineConfig代码详解
运行效果:(输出分别是:哪一个EXTICR寄存器--寄存器哪一段清0(0000)--哪一个io口--临时变量:配置寄存器的哪一段设F(1111)----第EXTI_PinSourcex >> 0x02个EXTICR寄存器配置值)
2024-01-18 13:24:29 602 1
原创 ST32F407外部中断配置步骤及使能SYSCFG时钟详解
使能SYSCFG时种函数传入的第一个参数:RCC_APB2Periph_SYSCFG。配置RCC_APB2ENR寄存器手册:寄存器绝对地址及位。
2024-01-17 22:18:59 495
原创 C++通过字库文件显示汉字点阵列
字库 链接:https://pan.baidu.com/s/1KtncRDQ1v9dNvS2dAqel1A?VS C++控制台运行结果。
2024-01-12 19:09:03 427 1
原创 基于micropython小显示屏汉字的显示
显示屏驱动代码ssd1306.py(芯片esp32基于micropython,运行软件Thonny)显示屏运行效果,及连接芯片管脚,vcc接5V(I2C,程序)重点关注图形代码的实现。
2024-01-12 18:41:50 443 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人