适用于嵌入单片机的学习(这是下一版的小习题,还没有整理好)
DMA PWM输出
目标:使用 DMA 实现任意引脚的 PWM 输出。
处理器要求:必须要有端口位操作寄存器寄存器。
要求:实现呼吸灯效果。
使用 DWT 定时器实现精准的微秒延时
使用内部基准电压校准 ADC 参考电压
场景:一般情况下 MCU 的供电电压为 3.3V,ADC 的参考电压一般与供电电压同源,也为 3.3V,但是在供电不足情况下,MCU 供电不足 3.3V,ADC 的参考电压也随之下降,造成 ADC 测量的电压不准。
解决方案:MCU 自带了内部参考电压,可以用来解决这个问题。单片机可以通过内部参考电压推导出实际的 ADC 参考电压,通过实际的 ADC 参考电压即可求出正确的 ADC 输入电压。 注意:内部参考电压不是特别准,因此只能用于电池电压检测等场合。
动态内存管理
实现自己的动态内存管理,要求有垃圾回收功能和自动整合内存碎片功能。可以现在 Visual Studio 等 IDE 上实现,然后再移植到单片机上。
串口驱动
做一个 UART 驱动,如果处理器支持 5 个 UART,那么该驱动要含有 5 个串口的驱动代码。
要求:
1、每个串口都要能独立使能、禁用,串口各个参数,例如波特率等,要能独立配置。
2、每个串口要能单独使能/禁用 DMA 发送和 DMA 接收,不支持 DMA 的串口,要用定时器触发 DMA 的方式实现 DMA 发送。
3、驱动代码由单个.c、.h文件对实现,可以再添加一个循环队列文件对。
实现自己的启动文件
使用汇编语言实现自己的启动文件。
OLED 实现 GIF 显示
使用内存 Flash 保存用户数据
测量微处理器主频
使用 RTC 时钟为基准(一般 RTC 时钟会比较准),测量 DWT 计数值,从而推导出 CPU 主频。
实现微秒延时和毫秒延时
使用汇编或 C 语言下的 NOP 指令,实现精准的 1 微秒延时函数和 1 毫秒延时函数,要求要将函数调用过程消耗的时间也计算在内。
内存复制拷贝
1、使用 DMA 实现大量数据复制。
2、使用 32 位总线实现内存的快速拷贝。
实现 AT 指令
要求能支持无限多的指令,每条指令可以支持无限多的参数,参数类型要能支持有符号整型、字符串、无符号整型、浮点数等。整型参数要求能支持 10 进制和 16 进制。
每条指令都要能支持查询指令相关信息。
需要支持的寄存指令有:
1、“AT”
2、“AT+LIST”,用于罗列所有的 AT 指令
3、“AT+SEARCH”,根据关键字查找指令
指令要求不区分大小写,参数可严格区分大小写,罗列所有命令时要求按字母表顺序排列。 可以先用 Visual Studio 等 IDE 实现,最后再移植到单片机上。
字符串快速查找和定位
1、要求有两种模式,一是严格区分大小写比较查找,二是不分大小写比较查找。
2、实现中英文,即 GBK 字体混合查找。
3、实现 Unicode 字符串查找和定位。
4、实现 UTF-8 字符串查找和定义。 可以先在 Visual Studio 等 IDE 上实现,然后再移植到单片机上。
将程序烧入 SRAM 并测试
使用 BootLoard 实现多应用
1、多个应用可由 BootLoad 管理,并能通过按键切换。
2、结合蓝牙模块实现远程下载更新程序。
实现自己的 ISP 烧录工具
使用芯片唯一 ID 实现程序防非法读取
强制读取芯片程序并测试
1、通过一些串口工具、下载工具等,读取程序数据,并最终整合成 bin 或 hex 文件。
2、写一段程序,烧入 SRAM,读取 Flash 中的全部数据,最后生成 bin 或 hex 文件。
3、写一段程序,放到 Flash 末尾,并修改中断向量表,读取 Flash 数据。
要求读出来的程序写回单片机后能正常运行。
串口双缓冲区 DMA 发送
实现串口 DMA 发送的基础上,为串口 DMA 配置两个缓冲区,要求发送数据时无需等到发送完成,用以节省 CPU 资源。
DSP 测试
1、DSP 饱和运算测试。
2、移植 ARM 的 DSP 库到单片机,并作 FFT、FIR、IIR 测试和定点运算测试。
3、实现高频信号的幅频分析、波形类型分析。
内部 SRAM 速度测试
真随机数外设测试
IIC 监听
使用软件 IIC 监听 IIC 总线,要能检测出从机地址、读写情况(是读还是写)、读写地址、读写数据量和数据本身,并实施打印出来。
IIC 传输速度不宜太快,一开始可以用 1kHz 速度测试,后便在提高速度。
SPI 监听
使用软件 SPI 监听 SPI 总线,要求能实时输出数据和传输数据量、读写速度。
SPI 传输速度不宜太快,一开始可以用 1kHz 速度测试,后便在提高速度。
PNG 转 BMP
用 C 语言实现 PNG 转 BMP,可以一键将当前文件夹下所有的 PNG 图片转成 BMP,包括子文件夹里的图片。要求能在 Windows 桌面上实现透明效果。
此任务用 Visual Studio 等 IDE 实现,无需移植到单片机上。
CPU 利用率统计
计算裸机、不带操作系统下的 CPU 利用率,实现实时测量 CPU 利用率。
栈区统计
实现单片机栈区利用率计算,要求能测出栈区最大历史使用量。
使用 VSCode 开发
使用 VSCode 开发,要求能编译、下载、调试代码。
JLink下载器
使用开发板做一个 Jlink 下载器,要求能下载、调试。
hex 文件转 bin 文件小工具
制作一个 hex 文件转 bin 文件小工具,该小工具可以是简单的终端程序,也可以是一个 UI 界面程序,要求能批量将当前文件夹下所有的 hex 文件(包括子文件夹内的)转成 bin 文件。
怎么会有这么耐心的师兄🥹