- 博客(29)
- 收藏
- 关注
原创 STM32学习笔记--DMA操作和理解
DMA的理解:DMA表示:直接内存访问,用来提供外设和存储器或者存储器和存储器之间的数据传输:可以避免CPU的干预,提升CPU的效率。小贴士:正常来说所有的数据传输转移复制等功能都需要CPU的参与,所以在浪费CPU的资源,所以DMA可以把这些简单的工作换成不需要CPU参与,将CPU完全转化成数据计算,逻辑处理。DMA通道的配置:需要用哪个功能就需要用对应的通道。DMA的初始化配置:注意 :这里我使用USART演视DMA功能,需要在USART里面使能DMA功能USAR...
2022-02-25 15:11:01 731
原创 uCOS-III学习笔记(10)----等待多个内核对象
理解:等待多个内核对象说的就是,比如一个任务需要等待信号量才能打开led1,等待一个消息队列才能打开led2,此时不用等待多个内核对象的话就算来了信号量也会被pend卡住而不能往下面运行,所以等待多个内核对象解决的就是这类问题。创建多个内核对象:比如需要等待一个信号量和一个消息队列,多内核对象就可以看成是一个数组OS_SEM MY_SEM;OS_Q MyMsgQ;OS_PEND_DATA mul_pend_array[2];//等待两个 这里就是2 OSSemCreate ((OS
2021-12-17 10:13:43 444
原创 uCOS-III学习笔记(9)----任务标志组
理解:这个其实很好理解,比如想完成这样一个功能,任务1的按键1按下并且按键2按下,此时任务2的灯才会亮,(这里说的并且也可以改成任意一个事件触发)。OS_FLAG_GRP MyEventFlag; OSFlagCreate((OS_FLAG_GRP *)&MyEventFlag, (CPU_CHAR *)"MyEventFlag", (OS_FLAGS )0, //状态的初始值,这里写0后面就要写置位,反之相同 (OS_
2021-12-17 09:25:43 206
原创 uCOS-III学习笔记(八)----消息队列
目录1.消息队列的理解和创建2.消息队列的作用3.例子演视1.消息队列的理解和创建(1)理解:消息队列本质上是一种任务之间的数据传输的桥梁,利用消息队列可以在不同的任务当中传递数据。(2)消息队列的创建,参考ucosiii的api手册例子和参数解释:OS_Q MyMsgQ; //这个需要自己定义 OSQCreate((OS_Q *)&MyMsgQ, //你上面定义啥,就传啥的地址.
2021-12-16 20:40:05 494
原创 uCOS-III学习笔记(七)----优先级反转
理解优先级反转是什么现象:优先级反转发生的原因就是因为多种任务执行的时候因为没有信号量执行不了,或者因为延时让出了cpu的使用权,导致其他的优先级低的任务先执行了。这就是优先级反转的现象举个例子:例子很关键extern OS_SEM MY_SEM; //创建的信号量void Task_1(void *p_arg){ OS_ERR err; (void)p_arg; while(1) { OSTimeDlyHMSM(0, 0, 0, 500
2021-12-16 16:04:52 770
原创 STM32基础学习笔记(5)---WWDG窗口看门狗
一、窗口看门狗(WWDG):这个和独立看门狗有点区别,这个有一个时间控制 请看下面的例子(非常精简)//------------------------------------------------------------------------举个例子,有一个程序从第0秒开始运行,在不产生任何其他干扰的情况下会在第5秒运行完;现在设置了看门狗(如果程序在第5秒还没运行完,就产生复位),现在程序收到了干扰在第二秒跑飞了,但是紧接着又被干扰了使得程序恢复了原来的位置,这个过程被消耗了0.
2021-12-03 16:28:02 524
原创 STM32学习笔记(4)---低功耗停止模式
一、低功耗模式的第二种---停止模式,相比于第一种睡眠模式,这种在上种的基础之上关闭了所有1.8V供电的部分以及HSI和HSE外部高速和内部高速时钟。功耗更低二、进入到该模式的方法官方手册中提供了,意思就是要控制寄存器来进入到这个模式,但是我们选择更方便的用库函数1.想到电源控制,就一定要先开启电源控制的时钟,这里的电源控制时钟被RCC的APB1总线控制所以第一步:使能它RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);2.
2021-12-03 16:10:44 2228 2
原创 STM32基础学习笔记(3)---低功耗睡眠模式
一、STM32低功耗模式--睡眠模式理解:1.睡眠模式可以简单理解为关闭ARM内核的供电,但是外围仍然在工作,意思就是发指令的没了,但是他的小弟还在休息。具体调用方法:1.通过在keil编程环境当中调用 __WFI(); 指令来进入到系统的睡眠模式进入后的唤醒方法1.中断唤醒(意思就是你不管啥中断 只要能进中断就能唤醒)2.事件唤醒(这个我还不太明白,没使用过,小伙伴可以查一下)展示一下 我这里是复用PA0的外部中断功能进行唤醒。也可以用其他的中断进行唤醒。...
2021-12-03 15:24:18 1592
原创 STM32基础学习笔记(2)---独立看门狗
一、IWDG(独立看门狗的配置)理解:1.独立看门狗用的是内部的低速时钟40Khz(实际为30-60Khz)2.独立看门狗的作用是 将跑飞的程序重新复位(有时候因为强电磁,太阳黑子活动干扰会把程序弄得跑飞)3.看门狗也就是字面意思,在你程序运行的同时,必须按照一定的时间段来进行 ‘喂狗 ’操作,不然你的狗就会乱叫导致程序复位。4.独立看门狗其实就是一个递减计数器,当计数器减为0的时候(且没有在减到0之前喂狗)就会触发独立看门狗复位5.独立看门狗是16位的 最大是65535;意思从最大
2021-12-03 10:02:19 366
原创 STM32基础学习笔记(1)---外部中断
一、外部中断1.在User文件夹中添加bsp_exti.c和bsp_exti.h文件,完成头文件的套路编写2.编写EXTI_GPIO_Conguartion(); EXTI1的初始化函数void EXTI_GPIO_Conguartion(void){ GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO的结构体 NVIC_InitTypeDef NVIC_InitStructure; .
2021-12-03 09:38:50 530
原创 uCOS-III学习笔记(2)----创建任务
1.在ucos-iii下创建自己的任务 1.在工程文件下创建APP文件夹,在文件夹里创建app.c和.h文件 2.可以把OSTaskCreat()这个里面创建任务的搬过来 再对照手册进行参数的修改 就可以创建出自己的任务OSTaskCreate((OS_TCB *)&OSIdleTaskTCB, (CPU_CHAR *)((void *)"uC/OS-III Idle Task"), ...
2021-11-30 15:29:27 603
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人