- 博客(43)
- 收藏
- 关注
原创 freeRtos事件组的使用
创建3个任务,任务1:累加100000000,然后设置事件bit 0;任务2:累减5000000次,然后设置事件bit 1;
2023-12-20 09:40:44
613
原创 freeRtos互斥量的使用
所以二进制并不能保证是谁上锁谁解锁,引入互斥量本质并没有解决这个问题,还是要程序员去解决。引入互斥量可以去解决优先级翻转的问题。
2023-12-15 13:57:56
461
原创 定时器TIM HAL库+cubeMX(下)
配置成上升沿检测,用来检测通道x上升沿到来,检测到上升沿后将计数值清0,再配置成下降沿检测检测通道x下降沿到来,高电平期间,计时器计数个数:N * (ARR+1) + CCRx2。计数器计数频率=定时器时钟频率/(psc+1),取倒数就是计数器计一个数需要的时间。高电平的持续时间=计数器个数*计数器计一个数需要的时间.
2023-12-09 13:07:48
329
原创 freeRtos队列的使用
队列是一个环形缓冲区很多生产者生产很多数据,很多消费者读数据,唤醒之后首先是执行高优先级的,同等优先级先执行等待时间长的。无论是写数据还是读数据都会有一个超时时间,写数据当队列已经满了就等待一会,当读数据队列已经空了可以等待一会。
2023-12-07 16:42:53
709
原创 freeRtos同步互斥与通信
单独执行一个任务可能只需要2s中,两个任务竞争可能需要4s的时间,需要让任务2在任务1运行期间进入Blocked状态,让出CPU资源才能提高效率。
2023-12-07 10:34:03
181
原创 单片机_RTOS_架构
对于每一个任务都有一个TCB_t 结构体,对于这个结构体可以使用动态分配也可以静态分配。动态分配在程序里面使用 xTaskCreate();去掉无关的代码:LCD等。
2023-11-29 16:21:57
624
原创 IWDG和WWDG HAL库+cubeMX
HAL_IWDG_Init //使能IWDG,设置预分频系数和重装载值等HAL_IWDG_Refresh //把重装载寄存器的值重载到计数器中,喂狗/* IWDG 寄存器基地址 *//* IWDG 初始化参数 *//* 预分频系数 *//* 重装载值 *///设置预分频系数和窗口值等//重装载计数器,即喂狗/* WWDG 寄存器基地址 *//* WWDG 初始化参数 *//* 预分频系数 *//* 窗口值 *//* 计数器值 *//* 提前唤醒中断使能 */
2023-11-28 23:46:03
361
原创 EXIT外部中断 HAL库+cubeMX
1.系统内核2.中断管理3.选择抢占优先级和响应优先级,共有5个等级,在这里就使用编写代码时最常用的2位抢占优先级2位响应优先级。4.勾选使能选项,后面的两个零,第一个代表抢占优先级的等级,第二个代表子优先级的等级。
2023-11-24 10:33:31
698
原创 GPIO HAL库+CubeMX
以正点原子精英版为例: 2.cubeMX生成3.编写自己的需要的LED驱动文件(BSP)三.GPIO输入四.GPIO相关函数
2023-11-23 16:58:46
516
原创 计算机存储器
手机的主存 一般是主存,机身存储是辅存。手机从APP存储在辅存里面,辅存的读写速度慢,不能直接跟CPU进行数据交互。想要获取数据,要先从辅存到主存。
2023-11-21 21:55:09
172
原创 STM32 内部Flash
STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程。
2023-11-16 17:05:18
171
原创 STM32 驱动OLED显示屏(8080驱动)
OLED,即有机发光二极管(Organic Light-Emitting Diode),LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示, OLED 效果要来得好一些。以目前的技术, OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。OLED优点:1.自发光,不需要背光 2.功耗更低,节能 3.对比度高,色彩鲜艳OLED缺点:1.烧屏 2.价格昂贵 3.低频频闪。
2023-11-14 00:09:28
2729
原创 MPU6050
MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度16位ADC采集传感器的模拟信号,量化范围:-32768~32767加速度计满量程选择:±2、±4、±8、±16(g)陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec)
2023-11-11 23:07:59
603
原创 STM32 舵机操控
180°舵机是一种根据输入PWM信号占空比来控制输出角度的装置输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5v。
2023-11-10 21:22:51
1149
原创 STM32 看门狗
WDG(Watchdog)看门狗看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性 看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号 STM32内置两个看门狗独立看门狗(IWDG):独立工作,对时间精度要求较低 窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用。
2023-11-09 16:24:29
237
原创 PWR简介
PWR(Power Control)电源控制PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间。
2023-11-07 16:54:47
1266
1
原创 RTC实时时钟和BKP
Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间。
2023-11-06 16:05:08
223
1
原创 STM32 SPI通信
SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select)同步,全双工支持总线挂载多设备(一主多从)SCK:时钟线MOSI和MISO分别用于发送和接收的两条线路,MOSI是主机输出从机输入,MISO是主机从从机接收数据的线路。
2023-11-02 15:45:17
245
原创 STM32 IIC通信
两根通信线:SCL(Serial Clock)串行时钟线、SDA(Serial Data)串行数据线同步,半双工带数据应答支持总线挂载多设备(一主多从、多主多从)相同芯片挂载在同一个总线,需要用到器件地址的可变部分,一般器件的最后几位是在电路中可变的,一般由器件引脚确定。
2023-10-30 16:56:13
462
1
原创 STM32 USART通信
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件。
2023-10-27 17:12:23
161
1
原创 STM32 DMA直接存储器
DMA(Direct Memory Access)直接存储器存取DMA可以提供外设(外设寄存器、ADC的数据寄存器、串口的数据寄存器等)和存储器(运行内存SRAM和程序存储器Flash)或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道) 每个通道都支持软件触发和特定的硬件触发STM32F103C8T6 DMA资源:DMA1(7个通道)
2023-10-27 00:19:46
206
1
原创 STM32 ADC
ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间输入电压范围:0~3.3V,转换结果范围:0~409518个输入通道,可测量16个外部和2个内部信号源规则组和注入组两个转换单元(ADC增强功能)模拟看门狗自动监测输入电压范围STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道。
2023-10-25 11:22:17
67
1
原创 定时器编码器接口
Encoder Interface 编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和通道2。
2023-10-24 17:09:08
126
原创 定时器TIM
TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断(定时触发中断),STM32中定时器的基准时钟都是72MHz,对72MHz记72个数,那么1MHz就是1us的时间16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时(预分频器设置最大2的16次方,自动重装寄存器设置最大2的16次方,得到72000000/65536/65536取倒数)
2023-10-19 17:08:12
530
原创 STM32中断系统
EXTI(Extern Interrupt)外部中断EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序,引脚电平发生变化就申请中断。支持的触发方式:上升沿/下降沿/双边沿/软件触发支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断(PA1、PB1不能同时触发中断)通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒。
2023-10-18 17:11:41
117
1
原创 光敏电阻/热敏电阻/红外接收管传感器
传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化。光线越强,光敏电阻的阻值就越小,温度越高,热敏电阻的阻值就越小。红外光线越强,红外接收管的阻值就越小。
2023-10-18 11:31:56
460
1
原创 通用和复用功能I/O(GPIO和AFIO)的使用
如果输入电压比3.3V还要高上方的二极管就会导通,输入电压产生的电流就会直接流入VDD,如果输入电压比0V还要低,相对于VSS就会产生负电压,下方二极管导通,电流会从VSS流出,不会从内部电路汲取电流1.LED:发光二极管,正向通电点亮,反向通电不亮(长脚是正极,短脚是负极,内部小的是正极,大的是负极)2.有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定3.无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。
2023-10-17 15:51:04
5211
原创 STM32基本介绍
Cortex-M3的内核,由内核引出三条总线ICode(指令总线)、DCode(数据总线)、System(系统总线)。SRAM用于存储程序运行时的变量数据。AHB(先进高性能总线)用于挂载主要的外设的,APB(先进外设总线)用于连接一般外设,APB2的性能比APB1高,APB2和AHB同频率的都是72MHz,APB1一般是36MHz。DMA做简单的数据搬运的,它可以拥有和CPU一样的总线控制权,用于访问外设小弟的,需要搬运数据时,就会发送DMA请求。
2023-10-16 16:24:44
259
1
原创 CV_8UC1,CV_32FC3,CV_32S等参数的含义
如果图像是32位或64位浮点型(32-bit floating-point or 64-bit floating-point),像素值便要乘以255。S|U|F: S--代表---signed int---有符号整形 U--代表--unsigned int--无符号整形 F--代表--float---------单精度浮点型。channels = 1:灰度图片--grayImg---是--单通道图像。channels = 3:RGB彩色图像---------是--3通道图像。
2023-10-14 21:28:07
1062
2
原创 计算机读取颜色及opencv的图像色彩模式
计算机中图片颜色通道一般采用RGB进行排列,opencv在读取图片时,按BGR读取.如果想使用RGB顺序的影像数据,需要进行转换。
2023-10-11 16:26:30
623
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人