- 博客(42)
- 收藏
- 关注
原创 STM32——IIC知识总结及实战
IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。结构图。
2024-01-17 10:31:46
1493
原创 STM32——DMA知识点及实战总结
DMA,全称Direct Memory Access,即直接存储器访问。DMA传输 将数据从一个地址空间复制到另一个地址空间。注意:DMA传输无需CPU直接控制传输。
2024-01-16 14:51:36
1091
原创 STM32——OLED实验
OLED,即有机发光二极管OLED引脚说明引脚说明:1、CS:OLED片选信号(低电平有效)2、WR:向OLED写入数据3、RD:向OLED读取数据4、D[7:0]:8位双向数据线,有8个引脚,每个引脚传一位数据5、RST(RES):硬复位OLED(低电平有效)6、DC:数据/命令标志(0,命令;1,数据)
2024-01-13 15:00:01
1401
原创 STM32——电容触摸按键充电时间测量实验
无手指触摸:上电时,电阻作用下,电容Cs进行充电,直到电容充满,这时候会有一个充电时间Tcs。有手指触摸:上电时,电阻作用下,电容Cs和Cx进行充电,电容充满时间会变长,得到充电时间Tcx。注意:充电过程可以看成是一个信号从低电平变为高电平的过程。STM32认为高电平的最低电压值(1.8V)、
2024-01-11 21:13:43
752
原创 STM32——高级定时器输出比较模式实验
1,配置定时器基础工作参数 HAL_TIM_OC_Init()2,定时器PWM输出MSP初始化 HAL_TIM_OC_MspInit() 配置NVIC、CLOCK、GPIO等3,配置PWM模式/比较值等 HAL_TIM_OC_ConfigChannel()4,使能通道预装载 __HAL_TIM_ENABLE_OCxPRELOAD()5,使能输出、主输出、计数器 HAL_TIM_OC_Start()
2024-01-11 11:02:05
1278
原创 STM32——高级定时器输出指定个数PWM波原理及实战
相比于通用定时器特性:1)重复计数器2)死区时间带可编程的互补输出3)断路输入,用于将定时器的输出信号置于用户可选的安全配置中。
2024-01-09 17:14:50
2474
2
原创 FreeRTOS——内存管理知识总结及实战
动态创建:从FreeRTOS 管理的内存堆中申请创建对象所需的内存,在对象删除后,这块内存释放回FreeRTOS管理的内存堆中静态创建:需用户提供各种内存空间,并且使用静态方式占用的内存空间一般固定下来了,即使任务、队列等被删除后,这些被占用的内存空间一般没有其他用途。
2024-01-05 18:08:07
1189
原创 FreeRTOS——软件定时器知识总结及其实战
是指具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数(也称超时函数),用户在回调函数中处理信息。
2024-01-05 12:00:21
1258
原创 freertos——任务通知知识总结与任务通知模拟及信号量实验、消息邮箱实验、事件标志组实验
任务通知:用来通知任务的,任务控制块中的结构体成员变量 ulNotifiedValue就是这个通知值,不需要另外创建一个结构体可以直接接受别人发过来的通知。
2024-01-04 19:58:15
1260
原创 freeRTOS——事件标志组知识总结及实战
if1#else#endif0EventBits_t 实际上是一个 16 位或 32 位无符号的数据类型注意:一个事件组最多可以存储 24 个事件标志!
2024-01-04 16:40:52
1007
原创 freeRTOS——队列集知识总结及实战
可以在任务间传递不同数据类型的消息作用:用于对多个队列或信号量进行“监听”,其中不管哪一个消息到来,都可让任务退出阻塞状态。
2024-01-04 14:42:05
1283
原创 FreeRTOS——互斥信号量知识总结及其实战
1)互斥信号量:是一个拥有优先级继承的二值信号量,在同步的应用中二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中!2)优先级继承:当一个互斥信号量正在被一个低优先级的任务持有时, 如果此时有个高优先级的任务也尝试获取这个互斥信号量,那么这个高优先级的任务就会被阻塞。不过这个高优先级的任务会将低优先级任务的优先级提升到与自己相同的优先级。3)互斥信号量有任务优先级继承的机制, 但是中断不是任务,没有任务优先级, 所以互斥信号量只能用与任务中,不能用于中断服务函数。
2024-01-04 10:55:48
588
原创 FreeRTOS——优先级翻转
优先级翻转:高优先级的任务反而慢执行,低优先级的任务反而优先执行注意:在实时操作系统中不允许出现,在二值信号量中经常出现。
2024-01-04 10:01:45
538
原创 FreeRTOS——计数型信号量知识总结及实战
1)计数型信号量相当于队列长度大于1 的队列,因此计数型信号量能够容纳多个资源2)适用场景:事件计数:当每次事件发生后,在事件处理函数中释放计数型信号量(计数值+1),其他任务会获取计数型信号量(计数值-1) ,这种场合一般在创建时将初始计数值设置为 0。资源管理:信号量表示有效的资源数目。任务必须先获取信号量(信号量计数值-1 )才能获取资源控制权。当计数值减为零时表示没有的资源。当任务使用完资源后,必须释放信号量(信号量计数值+1)。信号量创建时计数值应等于最大资源数目。
2024-01-03 21:12:27
585
原创 FreeRTOS——信号量知识点总结及二值信号量实战
1)信号量的计数值都有限制:限定最大值。如果最大值被限定为1,那么它就是二值信号量;如果最大值不是1,它就是计数型信号量。2)当计数值大于0,代表有信号量资源当释放信号量,信号量计数值(资源数)加一当获取信号量,信号量计数值(资源数)减一3)信号量用于传递状态。
2024-01-03 19:53:53
1044
原创 FreeRTOS——队列及其实战
xQueueCreate() 动态创建xQueueCreateStatic() 静态创建实际调用xQueueGenericCreate()返回值: NULL 创建失败其他值 创建成功注意队列类型6种:#define queueQUEUE_TYPE_BASE ( ( uint8_t ) 0U ) /* 队列队列集互斥信号量计数型信号量二值信号量递归互斥信号量 */
2024-01-03 17:36:25
1035
原创 STM32——通用定时器输入捕获实验(脉冲宽度)
1,配置定时器基础工作参数 HAL_TIM_IC_Init()2,定时器输入捕获MSP初始化 HAL_TIM_IC_MspInit() 配置NVIC、CLOCK、GPIO等3,配置输入通道映射、捕获边沿等 HAL_TIM_IC_ConfigChannel()4,设置优先级,使能中断 HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()5,使能定时器更新中断 __HAL_TIM_ENABLE_IT()
2024-01-02 21:09:58
1098
原创 STM32——通用计时器
1)内部时钟(CK_INT)2)外部时钟模式 1:外部输入引脚(TIx),x=1,2(即只能来自于通道 1 或者通道 2)3)外部时钟模式 2:外部触发输入(ETR)4)内部触发输入(ITRx):使用一个定时器作为另一定时器的预分频器。
2023-12-28 20:12:57
1951
1
原创 STM32——F407定时器概述
3》 ↑/↓ : 递增 /递减;从0 加到设定值,从设置值减到 0;2)输入捕获:脉冲计数,上升或下降沿实际检测,PWM输入检测。*APB1 与 APB2 都进行了固定 x2 倍频;1》 ↑:递增, 从0 加到设定值;2》 ↓:递减, 从设置值减到 0;4)编码器接口, 霍尔传感器接口;1)ADC/DAC,开始转换触发。
2023-12-28 11:46:54
708
1
原创 FreeRTOS——任务运行时间统计API实战
API函数原型: Void vTaskGetRunTimeStats( char * pcWriteBuffer )作用:用于统计任务的运行时间信息,形参: 接收任务运行时间信息的缓存指针。
2023-12-27 18:24:47
681
1
原创 FreeRTOS——API相关函数介绍及任务状态查询实战
功能:获得任务优先级 使用该函数需将宏 INCLUDE_uxTaskPriorityGet 置 1形参:任务句柄,NULL代表任务自身返回值:任务优先级数值功能:改变某个任务的任务优先级,使用该函数需将宏 INCLUDE_vTaskPrioritySet 为 1形参:参数1:任务句柄,NULL代表任务自身参数2:需要设置的任务优先级功能:此函数用于获取系统中任务的任务数量返回值:系统中任务的数量。
2023-12-27 11:30:30
1007
1
原创 FreeRTOS——时间片调度以及实战
概念:同等优先级任务轮流地享有相同的 CPU 时间(可设置), 叫时间片,在FreeRTOS中,一个时间片就等于SysTick 中断周期。
2023-12-26 17:20:19
605
1
原创 FreeRTOS——任务调度
1、滴答定时器中断调用2、执行FreeRTOS提供的相关API函数:portYIELD()本质:通过向中断控制和状态寄存器 ICSR 的bit28 写入 1 挂起 PendSV 来启动 PendSV 中断。
2023-12-26 15:43:35
449
1
原创 FreeRTOS列表与列表项相关知识总结以及列表项的插入与删除实战
形参:pxList 待初始化列表项描述:初始化列表,pxIndex 指向 xListEnd,xListEnd为oxFFFFFF形参: pxItem 带初始化列表项描述: 初始化列表项,列表项所在列表为空,pxItem->pxContainer = NULL形参:pxList 列表pxNewListItem 待插入列表项 ,,无序的插入方法描述:列表末尾插入列表项形参:pxList 列表。
2023-12-25 15:41:43
993
原创 【无标题】FreeRTOS——临界段代码保护与任务调度器挂起与恢复知识点总结
注意。FreeRTOS 在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断taskENTER_CRITICAL() 任务进入临界段taskEXIT_CRITICAL() 任务退出临界段taskENTER_CRITICAL_FROM_ISR() 中断级进入临界段taskEXIT_CRITICAL_FROM_ISR() 中断级退出临界段。
2023-12-25 09:23:03
477
原创 FreeRTOS——中断管理编程实战
1)低于configMAX_SYSCALL_INTERRUPT_PRIORITY优先级的中断里才允许调用FreeRTOS 的API函数。2)建议将所有的优先级位设置为抢断优先级位,方便FreeRTOS管理3)FreeRTOS中断管理是使用BASEPRI中断屏蔽寄存器,其设置了一个阈值,低于这个优先级的中断被屏蔽。
2023-12-23 17:47:22
383
1
原创 定时器1-基本定时器理论知识及实战
1)时钟源:基本定时器时钟挂载在 APB1 总线,先经过一个倍频器,挂载在 APB1 总线的定时器时钟频率为 84Mhz。2)计数器:通过设置预分频器寄存器(TIMx_PSC)的值可以得到不同频率 CK_CNT,计算公式如下:fCK_CNT= fCK_PSC / (PSC[15:0]+1)3)更新事件的产生有两种情况:一:由软件产生,将 TIMx_EGR 寄存器的位UG 置 1,产生更新事件后,硬件会自动将 UG 位清零。
2023-12-21 21:07:42
514
原创 WWDG(窗口看门狗)知识总结及编程实战
1)产生系统复位信号和提前唤醒中断的计数器2)当递减计数器值从 0x40减到0x3F时复位(即T6位跳变到0)3)计数器的值大于W[6:0]值时喂狗会复位4)提前唤醒中断 (EWI):当递减计数器等于 0x40 时可产生5)在窗口期内重装载计数器的值,防止复位。
2023-12-21 13:57:37
489
原创 串口编程实战
1,配置串口工作参数 HAL_UART_Init()2,串口底层初始化 HAL_UART_MspInit() 使能USART和对应的IO时钟,初始化IO,使能USART中断,设置优先级3,开启串口异步接收中断 HAL_UART_Receive_IT()4,设置优先级,使能中断 HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()
2023-12-20 17:26:55
322
1
原创 串口相关知识总结
TX:发送数据输出引脚RX:接收数据输入引脚SCLK:发送器时钟输出,适用于同步传输SW_RX:数据接收引脚,属于内部引脚,用于智能卡模式IrDA_RDI:IrDA 模式下的数据输入IrDA_TDO:IrDA 模式下的数据输出nRTS:发送请求,若是低电平,表示 USART 准备好接收数据nCTS:清除发送,若是高电平,在当前数据传输结束时阻断下一次的数据发送。
2023-12-20 10:27:04
1039
1
原创 中断相关知识点总结
SYSCFG_EXTICR1的 EXTI0[3:0]位控制(F4/F7/H7)要点:1)EXTI 支持 23 个外部中断/事件请求。2)其中EXTI 线 0~15:对应外部 IO 口的输入中断。3)STM32 把 GPIO 管脚 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0~15。这样子每个中断线对应了最多 7 个 IO 口。4)以线 0 为例:它对应了 GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0 和 G
2023-12-19 13:34:52
396
1
原创 STM32 中断实战——实现LED0(红灯)的翻转
1,使能GPIO时钟 使用:__HAL_RCC_GPIOx_CLK_ENABLE2,GPIO/AFIO(SYSCFG)/EXTI 使用:HAL_GPIO_Init3,设置中断分组 HAL_NVIC_SetPriorityGrouping,4,设置中断优先级 使用: HAL_NVIC_SetPriority5,使能中断 使用: HAL_NVIC_EnableIR。
2023-12-19 12:18:20
613
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人