因为内容多,所以博客更新的较慢,记录下慢慢更新
一、DMA
简单来说就是:直接存储器访问
DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路, 能使 CPU 的效率大为提高。
STM32 最多有 2 个 DMA 控制器( DMA2 仅存在大容量产品中),12个独立的可配置的通道(请求), DMA1 有 7 个通道。DMA2 有 5 个通道。每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个 DMA 请求的优先权。
***********************
F4的DMA多一个数据流,其他类型的单片机看手册就行,无数据流
例如: DMA1
DMA有三个方向:内存到内存 内存到外设 外设到内存
二、RTC时钟
RTC(Real Time Clock)实时时钟,它是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。
- RTCCLK通常选择低功耗32.768kHz外部晶振(LSE)
- RTC预分频器通常设置为32768,LES时钟经过RTC预分频器,输入频率变为1Hz,也就是1秒
- RTC_CNT输入时钟为1Hz时,1s加1次
- RTC_ALR是用来做闹钟的,RTC_CNT的值会与RTC_ALR的值进行比较,二者相等时,会产生闹钟中断
RTC配置步骤
- 使能电源时钟和后备域时钟,开启RTC后备寄存器写访问
- 复位备份区域,开启外部低速振荡器(LSE)
- 选择RTC时钟,并使能
- 设置RTC的分频系数,配置RTC时钟
- 更新配置,设置RTC中断分组
- 编写RTC中断服务函数
三、SD卡
1、SPI方式驱动SD卡
移植这两个文件,如果SPI没初始化需要初始化引脚,然后拉高片选CS
例如:相关的操作函数
2、FATFS
FATFS 是一个通用的文件系统(FAT/exFAT)模块,用于在小型嵌入式系统中实现FAT文件系统。 FatFs 组件的编写遵循ANSI C(C89),完全分离于磁盘 I/O 层,因此不依赖于硬件平台。它可以嵌入到资源有限的微控制器中,如 8051, PIC, AVR, ARM, Z80, RX等等,不需要做任何修改。
移植文件操作系统
SD卡文件操作步骤:
挂载文件系统——打开文件——读写操作——关闭文件——取消挂载
f_mount() —— f_open() —— f_read()/f_write() —— f_close() ——f_mount(NULL)
3、BMP图片显示
😌图片目录处理
😈用链表来存储路径,方便对内存的优化,可自由读取图片的数量,做电子相册
4、音乐播放
同样的方法进行链表的存储路径,然后读取音频文件进行播放
音乐播放的同时,对应的图片进行显示,通过文件名来进行搜索
/************************************************************ * 函数名称:Show_Wav_Play * 函数说明:读取SD卡中指定的一首歌 * 形 参:num 第几首歌 * 返 回 值:无 * 备 注:链表获取的路径--随着音乐播放显示相应的图片 *************************************************************/ void Show_Wav_Play(u8 num) { LinkList *p=Wav_head;//视频的头指针 LNode *p2=heade;//图片的头指针 char buff[50]={0},*q,*t;//定义临时数组和指针来存放 while(p->next) { p=p->next;//跳过头 if(p->num==num) { strcpy(buff,p->name);//将文件的路径存到临时数组中 t=strtok(buff,".");//分隔路径名 //printf("t=%s\r\n",t); t=strtok(t,"/");//分隔 while(t) { q = t;//拿到图片的名字 t=strtok(NULL,"/"); //printf("t=%s\r\n",t); } //printf("q=%s\r\n",q); while(p2->next)//遍历视频的名字路径 { p2=p2->next; if(strstr(p2->name,q))//查找名称 { bmp_decode(p2->name);//显示图片 } } printf("%s 第%d首歌\r\n",p->name,p->num); WAV_Play((u8*)p->name);//播放视频 } } }
进度条--用定时器来实现--标志位进行读取
暂停播放和继续播放在外部中断里实现,还有音量调节,语音控制同理
四、UCOSIII操作系统
1、UCSIII简介
UCSIII 是一个可以基于 ROM 运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。
2、UCOSII移植
任务创建
其他任务函数创建 另外的文件进行存放会更好
3、UCOSIII应用
- 任务创建
- 任务管理
- 消息队列
- 信号量
- 互斥信号量
- 消息队列
- 事件标志位
- 软件定时器
- 内存管理
- 中断管理
五、智能楼宇的项目
- 485通讯
- modbus
- LCD-8080
- LCD-FSMC
- 触摸屏
- LVGL
- GUI
六、三级管、MOS管
三极管,,NPN型,箭头往外,B基极给高电平,C集电极和E发射极导通,,PNP型,箭头往里,B极给低电平,C和E导通。
MOS管,,,两线相交是S极,单独引线是D极,,NMOS箭头指向G极,,PMOS箭头指向外面,,寄生二极管,N沟道,S极指向D极,P沟道则相反,,,总的来说要么都S指向D,要么都D指向S,,
N MOS,S极接输出,D极接输入,,PMOS则相反、电流导通方向跟寄生二极管方向相反,NMOS导通条件,G极电压大于S极电压,反之,,PMOS相反,、G极和N极电压相等时,截止