- 博客(22)
- 资源 (5)
- 收藏
- 关注
原创 Python脚本自动去除文档中无用的信息
想去掉文档中的“//0x20”的信息,手动消除的话会很麻烦,这时用python脚本就很方便。这样就能一键消除,非常方便。
2024-02-04 20:59:22
440
原创 用vscode运行python 3.10.11版本时终端输出中文乱码
1.问题现象:python 3.10.11版本是支持中文的,但是输出终端会乱码。如此,再重启vscode,就可以恢复正常。2. 解决方法:修改系统的环境变量。
2024-01-21 16:43:32
478
原创 关于FIFO寄存器的理解
相当于一个缓冲区,比如你一秒扔我一个球,我刚好能接住,然后你一秒扔两个,我可能接不住,这时候FIFO就是缓冲这个球的,让我能适应你的频率,但是如果你长期是一秒两个,FIFO满了,我还是接不住。...
2021-12-17 20:29:25
1607
原创 STM32关于定时器跳不出主函数一直在中断里循环的问题
最近在调步进电机SPTA加减速的时候,遇上了困扰了我一个星期的问题。问题如下:每当使能定时器,开始SPTA加速时(加减速过程在中断函数里执行),总是一直在中断函数里,跳不出主函数。非得等到加速过程执行完了才跳转到主函数里去。问题分析:首先,我先想到的是难道中断标志位没去除吗?再次查看确实是去除了。不是这个问题。但是我还是不甘心,然后我又在SPTA各个运动阶段加上去除中断标志位,发现有效果!这就奇怪了,我不是已经去除中断标志位了吗,为啥非要去除两次,三次呢?由此得出推测:应该是中断服务函数里指令过长导
2021-11-03 14:12:33
5541
1
原创 关于STM32中的中断优先级的理解
在STM32中有两种中断优先级,1.抢占式中断优先级。2.响应优先级(子优先级)。两种优先级的优先顺序是:抢占式>响应式。1.抢占式:即当中断来临时,可立马中断此时的操作而去执行抢占式优先级的活儿。高抢占式优先级可以中断低抢占式优先级(中断嵌套)。2.响应式:即当两个相同抢占式优先级的中断而响应式优先级不同的的中断来临时,先执行高响应式优先级,再执行低响应式优先级的中断。举个不恰当的例子,这就如同你是一名老师在上课,突然教务处主任来找你,他的级别(抢占优先级)比你高,可以中断你的课程。同样这个时
2021-10-20 10:20:51
7734
1
原创 步进电机梯形加减速改进版
最近在做有关步进电机梯形加减速相关实验,顺便将《AVR446_Linear speed control of stepper motor.pdf》中的所有公式都推了一遍,发现仍有些值得去改进的地方。在AVR446中步进电机控制的参数有期望速度、加速度、减速度以及总的步数,加、减速度这两个参数有时不好把握,用起来还是没有时间方便、直观。所以本文主要是将加减速度替换掉,变成时间。至于推导过程,已经写成了文档形式,这里便不再累述。文档地址:https://download.csdn.net/download/
2021-07-22 15:45:24
814
转载 tcp和socket的区别
一:tcp协议tcp协议属于传输层协议(UDP也属于传输层协议,但是UDP协议是无状态的)。建立一个TCP连接需要三次握手,断开一个TCP连接需要四次挥手。手机能够使用联网功能,是因为手机底层实现了TCP/IP协议,使用手机终端通过无线网就可以与服务端建立一个tcp连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。tcp建立连接需要三次握手: 图1:tcp连接三次握手示意图如图所示:客户端要与服务端建立tcp连接,首先向服务端发送一个syn J信号,服务端
2021-05-12 13:38:09
4968
2
原创 基于C语言的字符切割方法
最近在用主控STM32H743与摄像头MT9V034做数字识别,今天刚解决数字识别中的字符切割。效果能用,但还需完善。 原理:主要用了投影法,先进行垂直投影,找出多个字符的左右边框,再对每个字符单独水平投影,捕获该字符的上下边框。原理很简单,下面是程序流程图:下面是程序源码:typedef struct{ uint16_t UpLine; uint16_t DownLine; uint16_t LeftLine; uint16_t RightLine;}CharPosInfTy...
2021-03-11 16:59:18
2702
8
原创 STM32H743内部所有SRAM的使用
STM32H7有64KB的ITCM RAM、128KB的DTCM RAM、D1域512KB的AXI SRAM、D2域128KB SRAM1+128KB SRAM2+32KB SRAM3以及D3域64KB SRAM4和4KB备份SRAM。(具体详情请参考STM32H7x3编程参考手册P96)我们可以自由地分配这些内存。目前,MDK与IAR均支持这种内存使用方式。MDK管理各个D域SRAM及TCM RAM的方法与步骤:通常情况下我们都是通过编译器分配内存区:但这种操作方法具有局限性,只能使用两个.
2021-02-25 18:32:26
6096
转载 关于神经网络算法的理解
参考资料:https://wenku.baidu.com/view/6ceffe6e7e21af45b307a8aa.html
2021-01-28 17:55:04
363
原创 c语言中关于struct与typedef struct的区别
struct{成员表列}变量名表列1,变量名表列2;(变量名表列1,变量名表列2)这2个变量名怎么理解?一个是声明一个结构体的原始用法,一个是把结构体取了个别名。例如struct list{int a;char c;stuct list *next;};(注意这个分号不能少)这个结构体的类型名是struct list ;struct只是声明结构体需要的关键字。 如果你要定义一个结构体变量 你就可以 :结构体类型 变量名如:struct list student;你是不是觉得写st
2021-01-22 14:17:29
299
1
转载 基于C语言的8深度灰度BMP文件读写
参考文献:https://wenku.baidu.com/view/20f7a35852d380eb62946ded#
2021-01-13 17:46:17
260
转载 详细理解STM32F42x系列的DMA配置
以SPI2 为例,将存储器中的数据,通过DMA方式搬运到外设,也就是往外发SPI_TX,DMA配置步骤:1、选择DMA1还是DMA2:通过图1可查看到SPI2是在DMA1表里,所以选择DMA1。RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1,ENABLE);2、选择数据流:该配置应该放在所有信息配置完在使能。DMA_Cmd(DMAX_StreamY, ENABLE);其中X = 1、2,Y=0、1…7,有两个DMA,分别是DMA1和DMA2,每个DMA控制器有
2021-01-05 17:24:48
1074
原创 MT9V034摄像头的调试经验
经过一个多星期的努力,最后一个Bug也解决了。先让大家看看摄像头的效果。上面这副图有点过曝的毛病,还需要调节下其曝光时间,还有其拐点也需要调节下。这是我一个星期前的效果,额。。。极差这是什么原因导致的呢?大家仔细观察上面那副大片瑕疵的那副图,要么本应该太白的地方变得特别黑,要么本应该太黑的地方变得特别白,其实就是因为摄像头数据溢出了,因为MT9V034给出的数据口一共是10Bit位,而我用DCMI接口只使能了8Bit位,我用uint8_t类型变量接受10bit位的数据就会溢出,总所周知,0x00全
2020-12-17 16:35:12
3528
2
原创 STM32H743中的DCMI无法进入行中断和场中断问题
今天在玩MT9V034摄像头时,用到了DCMI接口处理摄像头的数据,出现了一个BUG,怎么都进入不了行中断或者场中断。究其原因,原来是忘记设置其中断优先级了。void Msp_DCMI_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_DCMI_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOI_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_
2020-12-02 18:58:48
2444
转载 STM32H743不能使用DMA的问题
我使用DMA进行SPI传输时发现无数据,还好有个逻辑分析仪,不然有没有信号都不知道这是总线访问权限的图。“-”表示不能访问。“D”表示直接访问。其它的都是间接访问。发现DMA1只有ITCM和DTCM不能访问,问题就出在这。有句“TCM 接口上的 DTCM-RAM 映射到地址 0x2000 0000,可供 Cortex®-M7 访问…”。(M7是处理器核)内存分布: DTCM-RAM(数据TCM RAM):起始地址:0x2000 0000,大小:0x20000(128KB)。
2020-12-02 18:39:33
2431
转载 STM32 BOOT模式设置
第一种模式boot0= 0,boot1=0或1(默认0),这种模式下,STM 32处于正常的读取芯片内部存储空间的程序即运行正常程序。第二中模式,boot0=1,boot1=0时,进入调试模式,可以通过烧录工具把修改好的代码所生成的HEX文件烧录到芯片里面,然后把boot0跳线跳回0,执行代码第三种,boot0=1,boot1=1, 要注意的是,一般不使用内置SRAM启动(BOOT1=1 BOOT0=1),因为SRAM掉电后数据就丢失,多数情况SRAM只是在调试时使用,也可以做其他一些用途,如做故
2020-11-08 16:57:20
3729
原创 STM32F103C8T6串口DMA不能清除空闲中断问题
前些天做了一次STM32F030串口DMA收发数据实验,今天在STM32F103上做同样的实验遇上了一个问题——无法清除空闲中断。今天经过一下午的折腾,找到了两处bug。1.第一点错误:USART1_Init()与DMA_config();的顺序有误,其实就是USART_Cmd(USART1, ENABLE)与 USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE)顺序弄错了。正确的是先USART_Cmd(),后USART_DMACmd()。2.第二点错误:STM..
2020-10-19 19:38:06
3335
5
原创 STM32F0系列串口DMA收发数据
关于STM32F0系列串口DMA收发数据详解这里用的库函数版本,芯片型号为stm32f030c8t6.在用到串口DMA时,要按以下几个步骤进行。1.确定使用的串口号,这里,我用的是usart2,对应复用的引脚是PA2,PA3。再根据数据手册查询其对应DMA通道。 对应使用是DMA1_CH4(USART2_TX)与DMA1_CH5(USART2_RX)2.先进行串口初始化配置void USART2_Init(){ GPIO_InitTypeDef GPIO_InitStructure; U
2020-10-13 23:45:05
5018
2
原创 用VS2019编译文件时出现了Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version
Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]用VS2019编译文件时出现了Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version的错误。解决方法:在项目点击鼠标右键,依次选择
2020-09-25 17:44:49
1366
1
步进电机梯形加减速控制 - (初速度为0) - 完整版.pdf
2021-07-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人