02 2025 档案
摘要:第24章 录放音频 1. 录制音频 录制音频程序默认的执行时间是15秒,需要更长时间可以在main函数调用对应函数时修改传入的参数,也就是调用record_audio函数的第二个参数:duration。 import os from media.media import * #导入media模块,用
阅读全文
摘要:第二十三章 录放视频 我们先录制,再播放视频。在录制视频时会同步录制音频(用板载的贴片麦克风),大家在播放视频时把耳机连接到3.5mm耳机接口就可以听到当前录制的声音了。 1. 录制视频 from media.mp4format import * import os width = 800 heig
阅读全文
摘要:第一章 新建工程模板 这个没啥好说的,上几组图就懂了 1. 工程目录建立 2. 头文件包含 3. 分组并添加文件
阅读全文
摘要:第二十二章 获取触摸坐标 1. TOUCH模块 TOUCH 类位于 machine 模块下。 from machine import TOUCH # 实例化 TOUCH 设备 0 tp = TOUCH(0) # 获取 TOUCH 数据 p = tp.read() print(p) # 打印触摸点坐标
阅读全文
摘要:第二十一章 有线网络 在开始之前,大家先将【USB转以太网】插入庐山派的TYPE-A口,然后将能连入互联网的网线插入你的USB转以太网工具。如下图所示: 2. network.LAN() 此类为有线网络的配置接口。示例代码如下: import network nic = network.LAN()
阅读全文
摘要:第二十章 无线网络 1. 连接WIFI 1.1 STA模式 STA模式(Station):庐山派作为客户端连接到现有无线网络 network.WLAN(network.STA_IF): 初始化一个 WLAN 对象,并设置为STA 模式。(站模式,可以连接到外部 WiFi 接入点) sta.activ
阅读全文
摘要:第十九章 码类识别 1. 一维码识别 生活中最常见的一维码就是你购买各种商品上的条形码了,它是一种通过不同宽度的黑白条纹来表示信息的图形标识符。条形码通常是由不同宽度的黑条和白条交替排列(黑色吸收光中的所有颜色,而白色反射光中的所有颜色,对比度很高,最常用),并按照特定的编码规则设计。商品上的条形码
阅读全文
摘要:第十八章 颜色识别 1. RGB与LAB LAB是一种基于人眼感知设计的颜色表示方式,由三个通道组成: L通道:表示亮度,范围从黑到白,0表示黑,100表示白。 A通道:表示从绿色到红色的颜色范围,范围是-128到127。负值靠近绿色,正值靠近红色。 B通道:表示从蓝色到黄色的颜色范围,范围是-12
阅读全文
摘要:第五章 FreeRTOS中链表的实现 reeRTOS 中与链表相关的操作均在 list.h 和 list.c 这两个文件中实现, list.h 第一次使用需要在 include 文件夹下面新建然后添加到工程 freertos/source 这个组文件, list.c 第一次使用需要在 freerto
阅读全文
摘要:第四章 C语言链表介绍 1. 单向链表 1.1 链表的定义 该链表中共有 n 个节点, 前一个节点都有一个箭头指向后一个节点,首尾相连,组成一个圈。 节点都是一个自定义类型的数据结构,在这个数据结构里面可以有单个的数据、数组、指针数据和自定义的结构体数据类型等等信息, // 单向链表示例 struc
阅读全文
摘要:第七章 特征检测 1. 线段检测 线段检测的基本思想有两个: 空间变换:霍夫变换中,会将图像边缘像素映射到一个极坐标或其它累加空间,并在累加空间中找极大值点对应的直线或线段。 后续合并:如果检出很多近似平行并且重叠度较高的线段,会做一个“合并距离”与“角度差”判断,把它们合并成一条线段。在庐山派中就
阅读全文
摘要:第三章 多任务系统 相比前后台系统,多任务系统的事件响应也是在中断中完成的,但是事件的处理是在任务中完成的。在多任务系统中, 任务跟中断一样,也具有优先级,优先级高的任务会被优先执行。当一个紧急的事件在中断被标记之后,如果事件对应的任务的优先级足够高,就会立马得到响应。相比前后台系统,多任务系统的实
阅读全文
摘要:第二章 裸机系统 裸机系统通常分成轮询系统和前后台系统,有关这两者的具体实现方式请看下面的讲解 1. 轮询系统 轮询系统即是在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情 // 轮询系统简单示例 int main(void) { HAL_Init();
阅读全文
摘要:第六章 几种图像处理方式 1. 直方图均衡化 其主要功能是增强图像的对比度,使图像的直方图分布更均匀。直方图是一种统计图表,用来显示图像中不同亮度值的分布情况。横轴表示亮度值(0-255),纵轴表示对应亮度值的像素数量。原图中,亮度可能分布不均,导致对比度不足或细节丢失。直方图均衡化通过调整像素亮度
阅读全文
摘要:内核基础:https://www.cnblogs.com/hazy1k/category/2445269.html STM32F移植模板:https://www.cnblogs.com/hazy1k/category/2446549.html STM32F1移植实验:
阅读全文
摘要:第一章 新建FreeRTOS工程 在开始写 FreeRTOS 内核之前,我们先新建一个 FreeRTOS 的工程, Device 选择Cortex-M3(Cortex-M4 或 Cortex-M7) 内核的处理器,调试方式选择软件仿真, 然后我们再开始一步一步地教大家把 FreeRTOS 内核从 0
阅读全文
摘要:第十五章 获取图像 1. 通过摄像头获取 如果需要实时处理或者动态场景下的分析,建议选择这种方式,但是受限于环境光照,摄像头焦距等原因,可能不同的场景下做的试验会有略微差异。 import time, os, sys from media.sensor import * from media.dis
阅读全文
摘要:第十章 DMA-数据传输 1. DMA介绍 CW32x030 支持直接内存访问(DMA),无需 CPU 干预,即可实现外设和存储器之间、外设和外设之间、存储器和存储器之间的高速数据传输。DMA 控制器内部的优先级仲裁器,可实现 DMA 和 CPU 对外设总线控制权的裁,以及多 DMA 通道之间的调度
阅读全文
摘要:第九章 ADC-电压采集 1. ADC介绍 CW32x030 内部集成一个 12 位精度、最高 1M SPS 转换速度的逐次逼近型模数转换器 (SAR ADC),最多可将 16路模拟信号转换为数字信号。现实世界中的绝大多数信号都是模拟量,如光、电、声、图像信号等,都要由 ADC转换成数字信号,才能由
阅读全文
摘要:第八章 TIM-输出PWM 1. PWM介绍 PWM是脉冲宽度调制,具有两个非常重要的参数:频率和占空比。 频率:PWM的频率是整个周期的倒数。 占空比:占空比是指一个周期内高电平所占的比例。 2. 软件设计 2.1 编程大纲 定时器配置 主函数测试 2.2 代码分析 2.2.1 TIM输出PWM模
阅读全文
摘要:第七章 TIM-定时 1. 定时器基本参数 1.1 预分频 预分频器可以将定时器的时钟(TIMER_CK)频率按1到65536之间的任意值分频,分频后的时钟PSC_CLK驱动计数器计数。分频系数受预分频器TIMERx_PSC控制。这个控制寄存器带有缓冲器,它能够在运行时被改变。新的预分频器的参数在下
阅读全文
摘要:第六章 EXTI-外部中断 1. 硬件设计 KEY引脚接到了单片机的PA0引脚上。按键的一端接到了3.3V,另一端通过一个10K的电阻接到了地。通过检测PA0引脚的电平状态,判断按键是否按下。当按键松开的时候,PA0检测到的电平为低电平,当按键按下的时候,PA0检测到的电平为高电平。在程序里使能PA
阅读全文
摘要:第十四章 图像绘制 1. 导入 penMV 是一个小型嵌入式机器视觉模块,广泛用于快速开发计算机视觉应用。OpenMV 的图像绘制方法可以用于在图像上绘制各种形状和文字,以便进行视觉反馈和调试。 CanMV支持OpenMV的图像绘制方法,并增加了一些,如绘制中文字符串的draw_string_adv
阅读全文
摘要:第五十八章 PWR-待机模式实验 1. 硬件设计 本实验中的硬件与睡眠模式、停止模式中的一致,主要使用到了按键、LED彩灯以及使用串口输出调试信息。要强调的是, 由于WKUP引脚(PA0)必须使用上升沿才能唤醒待机状态的系统,所以我们硬件设计的PA0引脚连接到按键KEY1,且按下按键的时候会在PA0
阅读全文
摘要:第十三章 显示画面 1. 导入 K230 配备 1 路 MIPI-DSI(1x4 lane),可驱动 MIPI 屏幕或通过接口芯片转换驱动 HDMI 显示器。此外,为了方便调试,还支持虚拟显示器,用户可以选择 VIRT 输出设备,即使没有 HDMI 显示器或 LCD 屏幕, 也可在 CanMV-ID
阅读全文
摘要:第五十九章 PWR-PVD电源监控实验 1. 硬件设计 本实验中使用PVD监控STM32芯片的VDD引脚,当监测到供电电压低于阈值时会产生PVD中断,系统进入中断服务函数进入紧急处理过程。 所以进行这个实验时需要使用一个可调的电压源给实验板供电,改变给STM32芯片的供电电压,为此我们需要先了解实验
阅读全文
摘要:第五十七章 PWR-停止模式实验 1. 硬件设计 本实验中的硬件与睡眠模式中的一致,主要使用到了按键、LED彩灯以及使用串口输出调试信息。 2. 软件设计 2.1 编程目标 重新配置时钟 获取两种状态的时钟并打印 主函数测试 2.2 代码分析 2.2.1 重启HSE时钟 与睡眠模式不一样,系统从停止
阅读全文
摘要:第五十六章 PWR-睡眠模式实验 1. 硬件设计 实验中的硬件主要使用到了按键、LED彩灯以及使用串口输出调试信息, 这些硬件都与前面相应实验中的一致,涉及到硬件设计的可参考原理图或前面章节中的内容。 2. 软件设计 2.1 编程大纲 EXTI相关参数宏定义 EXTI配置 中断服务函数 主函数测试
阅读全文
摘要:第五十五章 电阻触摸屏-触摸画板 1. 硬件设计 1.1 液晶实物图 1.2 屏幕PCB底版 屏幕的PCB底板引出的信号线会通过PCB底板上的FPC接口与液晶面板连接,这些信包括液晶控制相关的CS、RS等信号及DB0-DB15数据线, 其中RS引脚以高电平表示传输数据,低电平表示传输命令;另外还有引
阅读全文
摘要:第二章 寄存器点灯 1. 配置流程 打开端口时钟 配置端口功能 配置输出/输入模式 配置驱动能力或者速度 初始化端口 2. 开启GPIO的端口时钟 CW32的所有外设资源时钟默认都是关闭的,在配置外设之前需要先开 启对应的时钟。 要使能用户LED,就要先开启GPIOC的时钟,从数据手册的第11页我们
阅读全文
摘要:第五章 UART-串口通讯 1. 硬件设计 我们这里使用PA8(TX引脚)和PA9(RX引脚)的GPIO复用功能 2. 软件设计 2.1 编程大纲 uart1工作模式配置 uart发送数据函数 中断服务函数 主函数测试 2.2 代码分析 2.2.1 UART配置 void uart1_init(vo
阅读全文
摘要:第四章 SysTick-系统延时 1. 硬件设计 SysTick定时器可用作标准的下行计数器,是一个24位向下计数器,有自动重新装载能力,可屏蔽系统中断发生器。Cortex-M0+处理器内部包含了一个简单的定时器,所有基于M0+内核的控制器都带有SysTick定时器,这样就方便了程序在不同的器件之间
阅读全文
摘要:第三章 GPIO-驱动LED 1. 硬件设计 开发板关于LED灯的原理图如下图。LED引脚接到了PC13。 通过上面的原理图可以了解到,LED灯的负极接到了电源地,LED灯的正极连接到了单片机的GPIO口上,通过LED灯的驱动原理,只需要将GPIO配置为高电平即可点亮LED灯。对应用户LED就是使能
阅读全文
摘要:第十二章 摄像头的使用 1. K230的摄像头架构 在立创·庐山派-K230-CanMV开发板中,Sensor模块的主要作用是负责获取图像数据。这个模块将光信号转化为数字信号,供后续图像处理算法使用。 K230的Sensor模块API提供了对这些硬件的底层控制,模块负责图像采集与数据处理。该模块提供
阅读全文
摘要:第十一章 摄像头基础知识 1. 图像传感器 图像传感器是摄像头的核心组件,负责将光信号转换为电信号,这样电子设备才能处理和存储这些信息。可以将其比喻为开发板的“眼睛”。目前常见的图像传感器类型有CCD和CMOS。庐山派开发板使用的GC2093摄像头是CMOS类型的传感器,相比OV5647的显示效果提
阅读全文
摘要:CW32F030:https://www.cnblogs.com/hazy1k/category/2443850.html
阅读全文
摘要:第一章 新建工程模板 1. 前期准备 KEIL5 STM32入门系列-开发工具keil5安装 - 知乎 CW32F030的Pack包 通用高性能MCU-武汉芯源半导体官网|专注32位MCU芯片设计 CW32F030的标准固件库 通用高性能MCU-武汉芯源半导体官网|专注32位MCU芯片设计 2. 新
阅读全文
摘要:第八章 WDT看门狗 1. 看门狗的工作原理 初始化看门狗: 系统启动后,首先初始化看门狗定时器,并设置一个超时时间(喂狗时间)。 定时复位看门狗: 在正常运行中,系统需要定期向看门狗发送信号(称为“喂狗”),重置看门狗的计时器。 触发复位: 如果系统未能及时“喂狗”,看门狗计时器超时会触发硬件复位
阅读全文
摘要:第七章 TIM定时器 1. TIM基础配置 K230 内部集成了 6 个 Timer 硬件模块,最小定时周期为 1 毫秒(ms)。 Timer 类位于 machine 模块中。 1.1 构造函数 timer = Timer(index, mode=Timer.PERIODIC, freq=-1, p
阅读全文
摘要:第六章 RTC时钟 1. 开发板上的RTC 实时时钟(RTC)是指一种能够独立、连续地计量时间的硬件模块。RTC 即使在主系统电源关闭的情况下(例如有备用电池支持)也能持续走时,以确保设备下次启动时仍能获得当前真实时间。庐山派的RTC供电是和ADC的1.8供电是同一个网络,所以当开发板掉电时,开发板
阅读全文
摘要:第五章 ADC转换 1. ADC转换基本步骤 模拟信号是一个随时间连续变化的量(例如传感器的电压输出),而数字信号只在有限的离散时间点上取值,并且每个取值只能表示在一定量化精度下的数字代码。ADC 的作用就是定时(或在特定触发下)对模拟电压进行采样,并将每个采样点的电压值经过量化和编码后输出一个数字
阅读全文
摘要:基础学习:https://www.cnblogs.com/hazy1k/category/2419980.html 例程讲解:https://www.cnblogs.com/hazy1k/category/2422730.html 快速入门:https://www.cnblogs.com/hazy1
阅读全文
摘要:基础学习:https://www.cnblogs.com/hazy1k/category/2411801.html 例程讲解:https://www.cnblogs.com/hazy1k/category/2416683.html 快速入门:https://www.cnblogs.com/hazy1
阅读全文
摘要:第四章 UART串口通讯 1. 开发板上使用的串口 从上图中可以看到在排针处可以使用串口1,串口2,串口3,串口4。 排针引脚号 芯片引脚号 串口功能号 备注 03 GPIO 49 UART4_RXD 同时连入摄像头2(CSI2)用作IIC通讯,板子内部有4.7K的电阻上拉至3.3V 05 GPIO
阅读全文
摘要:第三十章 电源管理-实现低功耗 1. STM32的电源管理简介 电源对电子设备的重要性不言而喻,它是保证系统稳定运行的基础,而保证系统能稳定运行后,又有低功耗的要求。 在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久, 且期间不需
阅读全文
摘要:第三章 PWM控制 1. PWM介绍 PWM(Pulse Width Modulation,脉宽调制)是一种在嵌入式系统中常用的技术,它可以用来模拟信号,控制设备的功率输出或者实现对设备的精确控制。PWM信号是一种类似于方波的信号,具有固定的频率,但脉冲宽度(占空比)可以调整。在一定频率下,我们可以
阅读全文
摘要:第五十四章 刷外部FLASH程序 1. 导入 本程序用于给板载FLASH刷内容,恢复FLASH芯片的出厂固件。建议本程序只在FLASH内容损坏时使用,如中文显示错误等。 2. 软件设计 2.1 编程大纲 2.2 代码分析
阅读全文
摘要:第二章 GPIO与FPIOA 1. 导入 GPIO就是我们常说的IO引脚,它直接从芯片上引出,可以被设置为输入或输出信号。没有额外功能的GPIO主要用来控制简单的设备,比如点亮LED灯或者读取按键的状态。 FPIOA是一种灵活的输入输出阵列,允许芯片对IO功能进行重新配置,类似用STM32上的复用引
阅读全文
摘要:第五十三章 LCD变量示例-整数浮点等 1. 导入 测试一下我们所写的LCD驱动函数显示不同字体和不同类型变量 2. 软件设计 2.1 编程大纲 初始化LCD驱动 显示变量测试 居中显示测试 2.2 代码分析 2.2.1 不同变量测试 /* 测试显示变量 */ static uint8_t test
阅读全文
摘要:第五十二章 LCD显示中英文-任意大小 1. 导入 前文中无论是ASCII字符还是GB2312的字符,都只能显示字库中设定的字体大小,例如,我们想显示一些像素大小为48x48的字符, 那我们又得制作相应的字库,非常麻烦。为此我们编写了一些函数,简便地实现显示任意大小字符的目的。 2. 软件设计 2.
阅读全文
摘要:第五十一章 LCD显示-字库SD卡 1. 导入 显示ASCII编码比较简单,由于字库文件小,甚至都不需要使用外部的存储器,而显示汉字时,由于我们的字库是存储到外部存储器上的, 这涉及到额外的获取字模数据的操作。 2. 软件设计 2.1 编程目标 获取字模数据 根据字模格式,编写液晶显示函数 编写测速
阅读全文
摘要:https://www.cnblogs.com/hazy1k/category/2443127.html
阅读全文
摘要:第一章 MicroPython基础 注释 # 单行注释 """ 多行注释 """ print("注释学习") 运算符 print(10 + 5) # 加法 print(10 - 5) # 减法 print(10 * 5) # 乘法 print(10 / 5) # 除法 print(7 // 3) #
阅读全文
摘要:第四十九章 液晶坐标方向演示 1. 硬件设计 参考上一章 2. 软件设计 2.1 编程大纲 LCD驱动 LCD显示不同方向函数 LCD测试函数 2.2 代码分析 2.2.1 LCD轮显不同方向 void LCD_Direction_Show(void) // 用于展示LCD的八种方向模式 { uin
阅读全文