自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 keil调试stm32

-------------------------------------屏蔽寄存器---------------------------------------------------------///------------------------------------模式MODE-----------------------------------------------/下面给出一个keil调试stm32f407zgt6(移植有Freertos)的示例。

2025-01-19 15:58:55 375

原创 Freertos中断管理

设置临界区的中断屏蔽级别。用于设置可以调用中断安全的API函数的最高中断优先级,任何优先级高于这个值的中断都不能调用FreeRTOS的API函数。/--------------------------下面给出stm32F407 Freertos 配置这两个宏---------------------------------//--------------------------------下图贴出手册对于Interrupt Nesting中断嵌套的描述------------------/

2025-01-04 18:49:44 592

原创 stm32F4与F1配置引脚为复用输入模式时的不同之处

因为复用输出模式下,施密特触发器是开启的,由外设控制输出引脚的电平高低状态,同时我们知道此时施密特触发器的是开启的,因此可以在该引脚输入信号,输入的信号通往外设,供外设读取。二,F1而与F4不同,引脚配置为复用输入模式,时只需配置引脚为输入模式即可(上/下/浮空)。一,F4配置为AF_PP或AF_OD即可复用为外设的输入引脚,对,你没看错,将。下面给出F4参考手册对GPIO复用功能的描述。下面给出F1参考手册对GPIO复用功能的描述。三,例如配置uart1 RX引脚。F4,AF_PP或AF_OD都可。

2024-12-24 22:19:23 212

原创 stm32F4dma理解

同时一个很重要的burst特性是,burst的传输的不可分割性,在burst传输时,dma将锁定指定总线,因此不会出现数据传输一半被打断的情况,保证了数据的完好无损,也就是burst传输的。为缓解,直接模式下,dma发送一个字节就需要与cpu竞争相应总线的权利,频繁与总线竞争的情况,提出dma burst模式,即突发传输模式,一次突发传输,有多个节拍数,一。下面给出本人在学习stm32f407 dma后,得到的一些知识,在此做出总结,如有错误地方请大家指出。下图给出FIFO模式下的,封装/解封装的特性。

2024-12-11 15:47:19 427

原创 stm32硬件spi

在iic/spi/uart等通信协议 对于 IT/DMA/轮询 这三种方式的选择,不能一味的追求dma,或IT,而要根据需求分析,例如在操作较少的数据时,你使用dma/IT未必能比轮询方式快,在对存储器芯片操作时,发送的数据分为命令/数据,因此发送少量命令的时候,就没必要IT/dma,而在大量数据的时候,就需要dma或IT。还有一个要注意的点时,调用HAL_xxx_Transmit_IT/DMA , 仅仅是启动IT/DMA,使能了相应中断和控制位,而不是调用完这个函数就传输完成了,这一点一定要注意。

2024-12-08 21:26:31 560

原创 stm32硬件iic

来标志此次传输结束。/----------------------------------------------------------处理示例-------------------------------------------------------//---------------------------------------HAL库iic句柄中的PreviousState与State---------------------------------/:在主机接收完成回调函数处理完需求后 ,

2024-12-03 14:37:37 1022

原创 stm32adc

在用定时器更新事件触发adc采样,在使用HAL库开发时,由于HAL_TIM_Base_Init会调用TIM_Base_SetConfig函数,而在TIM_Base_SetConfig这个函数,配置为定时器基础参数后,在一个外部触发事件后,该模式按通道顺序一个一个转换ADC_JSQR寄存器中选择的序列,也就是发生一个外部触发事件,转换一个注入通道。应用:采用定时器TRGO事件来检测捕获事件进而触发adc采样,(捕获事件可以包括按键按下)TRGO触发可以选择捕获事件,而定时器CCx触发只能选择比较事件。

2024-11-24 08:46:17 439

原创 ARM架构及stm32杂谈

上图,为程序运行到Led_Tnit()这个函数是对应的反汇编窗口,通过观察可以发现函数本质上就是有由一条条指令组成,而函数名就为函数存放的地址,通过将 指定位置的反汇编窗口的机器码 与 内存中指定位置存放的数据 相对比,这正说明了Flash里存放的是机器码,恍然大悟!二,我们开发MCU所用的c语言,会被转成机器码,而机器码是cpu能读懂的,也是程序事实在在写在Flash里的内容,这也就解释了为什么我们直接看Flash里的内容看不懂,不知道在干什么,因为这是机器码,是给cpu读的。数据段属于静态内存分配。

2024-11-21 20:10:19 773

原创 stm32易混淆概念

而言,在发生中断后只需要调用一次__HAL_GPIO_EXTI_CLEAR_IT()即可,而不需要调用另一个宏来清除标志位。__HAL_GPIO_EXTI_CLEAR_IT() 和 __HAL_GPIO_EXTI_CLEAR_FLAG()的区别。(3):我们知道事件和中断的区别,事件不需要cpu干预,由硬件自动完成相应操作。(2): __HAL_GPIO_EXTI_CLEAR_FLAG()用于清除。(1):__HAL_GPIO_EXTI_CLEAR_IT() 用于清除。

2024-11-19 10:06:47 178

原创 keil头文件路径问题

问题描述:将原有的工程复制到一个新的工程,并且在此基础上,添加文件,之后出现,调用新添加文件里的函数,右键无法跳转的情况。注意相对路径和绝对路径。

2024-11-13 11:06:12 767

原创 stm32HAL库HAL_Delay()函数剖析

首先获取当前的全局变量uwTick的值,作为初值,然后while阻塞式延时,直到HAL_GetTick()的值 减去 初值 等于 Delay 退出循环。.明白HAL_Delay()是基于syssTick位于cortex内核里的一个滴答定时器,sysTick是一个24位的递减计数器,减到0后根据。的中断函数中,使用HAL_Delay(),由于sysTick的优先级最低,就会导致。3.HAL库中利用sysTick实现了ms级别的延时函数HAL_Delay(),sysTick的重装载寄存器的值。

2024-11-13 10:52:03 1114

原创 stm32定时器

OCxREF为内部信号,始终高电平有效,而OCx为向外部输出信号,基于OCxREF产生,其有效电平取决于CCxP的设置,当CCxP=0时,OCx=OCxREF,都为高电平有效。一对二的模式,就是把一个引脚的数据信号,同时映射到IC1和IC2,让IC1和IC2来处理引脚上发生的输入捕获事件。IC1 映射到TI1,IC2 映射到TI2(也就是IC1检测定时器输入通道1,IC2检测定时器输入通道2)IC1 映射到TI1,IC2 映射到TI1(也就是IC1检测定时器输入通道1,IC2检测定时器输入通道1)

2024-11-11 23:02:19 1503

原创 stm32USART

中断,调用UART_EndTransmit_IT(huart)这个函数,在其中失能TC中断,然后将gstate置于ready状态,以等待下一批数据的发送,最后调用HAL_UART_TxCpltCallback(huart)。的失能,因此在处理HAL_UART_TX/RxCpltCallback回调函数时,不会因为有新一批数据而会产生中断,因此当你在此需要接收/发送数据时,都需要在重新调用。(1) 空闲中断:在接收到数据后,如果在一个字节的周期内没有新的数据接收,硬件会置位IDLE位。

2024-10-29 21:10:34 947

原创 stm32易犯错误

1,在用hal库写stm32f4串口通信,接收字符串实验中,鄙人在写完后,出现了bug,足足debug了2个多小时,期间经历巨大的挫败感,最后才发现一个判断条件错了,鄙人最后大彻大悟。一个小细节耗费2个多小时,告诫大家一定要细心。

2024-10-15 23:08:58 225

原创 堆(最大堆与最小堆)

下面给出具体的实现代码,以及测试,用c++实现,代码右边有注释。,(为了方便,从1开始存,下标0 号位置不存),因此下标为。2.删除堆顶元素(也就是最大元素),之后仍保持最大堆的特性。由于最大堆的逻辑结构是一棵完全二叉树,因此可以通过。最大堆中的每一个父节点的值均大于其子结点的值。3.插入元素,同样插入后仍保持最大堆的特性。(按照整数除整数计算,例如5/2=2)1.由给定的一个数组序列,创建最大堆。而兄弟结点直接没有什么大小关系。的结点,它的左儿子在。

2024-06-28 11:47:01 515

原创 平衡二叉树

c.如果新根结点原来有左子树,则作为旧根结点的右子树。c.如果新根结点原来有右子树,则作为旧根结点的左子树。b.之后对根结点这个整数进行向右旋的操作。b.之后对根结点这个整树进行向左旋的操作。b.原来根结点作为新根结点的左子树。b.原来根结点作为新根结点的右子树。处理: a.对根结点的左子树进行向右旋的操作。处理: a.对根结点的右子树进行向左旋的操作。a.将其根结点的左子树作为新的根结点。1.任意结点的左右子树均为平衡二叉树。a.将其根结点的右子树作为新的根结点。

2024-06-27 11:57:09 415

原创 搜索二叉树

当树非空时,其右子树的结点值都大于根节点值,其左子树的结点值都小于根结点值,同样它的左右子树也是搜索树。同时本文也给出了层序生成二叉树,与层序遍历二叉树(广度优先)的操作。4.搜索树中删除指定值的结点,同时也保证树的有序性。3.向搜索树中插入元素(保证树的有序性)2.查找树中的最大与最小元素。1.二叉搜索树查找指定元素。

2024-06-25 10:46:25 230

原创 线索二叉树

由于含有n个结点的二叉树,有2n个指针域,然而只有n-1 个指针域被利用,还剩下 n+1 个指针域,是空闲的,而线索化正是利用这些空的指针域,,而当这个结点没有右儿子时,我们让其右指针指向其遍历的下一个元素,即。当这个结点没有左儿子时,我们让其左指针指向遍历的前一个元素,即其。定义全局变量指针pre始终指向遍历结点的前一个遍历的结点。,同时为了区分这个指针存放的是否为线索,设置标志位。的代码实现,在本文中仿照链表定义了一个。,在线索化完成后,我们让头结点。指向中序遍历的最后一个元素。

2024-06-21 15:32:27 164

原创 静态链表的算法,包括 链表初始化,头插法,尾插法建立链表,删除链表指定元素,链表的遍历。

/循环终止时即 L[p].cur =0 ,为数据表的结尾。if(L[0].cur==0) //考虑备用链表为空的情况。

2024-01-27 10:07:16 986 1

stm32F4 manual

内含个人笔记

2024-12-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除