自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 UCOSIII存储管理

作为一个操作系统,内存管理是其必备的功能,在UCOSIII中也有内存管理模块,使用内存管理模块可以动态的分配和释放内存,这样可以高效的使用“昂贵”的内存资源内存管理简介内存管理是一个操作系统必备的系统模块,我们在用VC++或者Visual Studio学习C语言的时候会用malloc()和free()这两个函数来申请和释放内存。我们使用Keil MDK编写STM32程序的时候就可以使用malloc

2016-08-10 16:41:49 3104

原创 UCOSIII事件标志组

我们可以使用信号量来完成任务同步,这里我们再讲解一下另外一种任务同步的方法,就是事件标志组,事件标志组用来解决一个恩物和多个事件之间的同步事件标志组有时候一个任务可能需要和多个事件同步,这个时候就需要使用事件标志组。事件标志组与任务之间有两种同步机制:“或”同步和“与”同步,当任何一个事情发生,任务都被同步的同步机制是“或”同步;需要所有的事件都发生任务才会被同步的同步机制是“与”同步,这两种同

2016-08-10 10:55:52 5044 3

原创 UCOSIII消息传递

有时候一个任务和另外一个或者几个任务进行“交流”,这个“交流”就是消息的传递,也称之为任务通信,在UCOSIII中消息可以通过消息队列作为中介发布给任务,也可以直接发布给任务,本章我们就讲解一个UCOSIII的消息传递,本章分为如下几个部分。消息队列消息一半包含:指向数据的指针,表明数据长度的变量和记录消息发布时刻的时间戳,指针指向的可以是一块数据区或者甚至是一个函数,消息的内容必须一直保持可见

2016-08-09 16:50:00 4975 1

原创 UCOSIII信号量和互斥信号量

在UCOSIII中可能会偶多个任务会访问共享资源,因此信号量最早用来控制任务存取共享资源,现在信号量也被用来实现任务间的同步以及任务和ISP同步。在可剥夺的内核中,当任务独占式使用共享资源的时候,会低优的任务高于高级优先任务运行的现象,这个现象叫做优先级反转,未来了解决这个优先级反转的问题,UCOSIII引入可互斥信号量这个概念。信号量信号量像是一种上锁机制,代码必须获得对应的钥匙才能继续执行,一

2016-08-08 10:58:12 2712

原创 UCOSIII软件定时器

在学习单片机的时候会使用定时器来做很多定时任务,这个定时器是单片机自带的,也就是硬件定时器,在UCOSIII中提供了软件定时器定时器的工作模式定时器其实就是一个递减技术器,当计数器递减到0的时候就会触发一个动作,这个动作就是回调函数,当定时器完成技术时就会自动调用这个回调函数。因此我们可以使用这个回调函数来完成一些设计。比如,定时10秒后打开某个外设等等,在毁掉函数中应该避免任何可以阻塞或者删除定

2016-08-05 14:43:44 2031

原创 UCOSIII中断和时间管理

在使用UCOS操作系统的时候我们对于中断服务程序的处理就要做一点修改,这个和我们不是用操作系统的时候是不同的。我们在对某些任务做延时的时候会使用到一些延时函数,中断管理和时间管理。中断管理UCOSIII中断处理过程STM32中是支持中断的,中断是一个硬件机制,主要用来向CPU通知一个异步事件发生了,这时CPU就会将当前CPU寄存器值入栈,然后转而执行中断服务程序,在CPU执行中断服务程序的时候有可

2016-08-04 16:59:26 4083

原创 UCOSIII相关API函数的使用

UCOSIII的任务创建和任务相关函数的使用,主要由任务的创建和删除,任务挂起和恢复,时间片轮转调度UCOSIII任务的创建和删除UCOSIII是多任务系统,那么肯定要能创建任务,创建任务就是将任务控制块,任务堆栈、任务代码等联系在一起,并且初始化任务控制块的相应字段。在UCOSIII系统中通过函数OSTaskCreate()来创建任务,OSTaskCreate()函数原型如下。调用OSTaskC

2016-08-03 15:41:32 2795

原创 UCOSIII任务管理

多仍无操作系统最主要的就是对任务的管理,包括任务的创建、挂起、删除和调度等。UCOSIII任务管理主要包括下面几个部分:1.UCOSIII启动和初始化2.任务状态3.任务控制块4.任务堆栈5.任务就绪表6.任务调度和切换UCOSIII启动和初始化 在使用UCOSIII的时候要按照一定的顺序初始化并打开UCOSIII: ·调用CPU_Init()初始化UCOSIII

2016-08-02 15:44:04 3003

原创 UCOSIII简介于移植

UCOSIII简介UCOSIII是一个可裁剪,可固化,可剥夺的多任务系统。相比于前代产品其最大任务数目没有限制,优先级相同的任务数目没有限制且有无需调度的的发送机制。UCOSIII文件在移植UCOSIII之前我们需要准备两样东西:一个是UCOSIII的源码,一个是Micrium官方在STM32F1xx上移植好的工程文件。在Micrium文件夹中有四个文件夹1、EvaBoards文件夹这个文件夹

2016-08-01 17:16:31 1770

原创 STM32学习笔记14——ADC part2

多重 ADC 模式 在具有两个或更多 ADC 的器件中,可使用双重(具有两个 ADC)和三重(具有三个 ADC) ADC 模式(参见图 41)。 在多重 ADC 模式下,通过 ADC1 主器件到 ADC2 和 ADC3 从器件的交替触发或同时触发来 启动转换,具体取决于 ADC_CCR 寄存器中的 MULTI[4:0] 位所选的模式。 注意:在多重 ADC 模式下,配置外部事件触发转换时,应用

2016-05-20 17:01:36 4211 1

原创 STM32F4学习笔记13——ADC part1

ADC 简介 12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部 源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续 采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。 ADC 具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。ADC 主要特性 ●

2016-05-19 11:05:40 7875

原创 STM32学习笔记13——DAC

DAC 简介 DAC 模块是 12 位电压输出数模转换器。DAC 可以按 8 位或 12 位模式进行配置,并且可与 DMA 控制器配合使用。在 12 位模式下,数据可以采用左对齐或右对齐。DAC 有两个输出 通道,每个通道各有一个转换器。在 DAC 双通道模式下,每个通道可以单独进行转换;当 两个通道组合在一起同步执行更新操作时,也可以同时进行转换。可通过一个输入参考电压引脚 VREF+ (与 A

2016-05-18 11:45:13 5504

原创 STM32F4学习笔记12——RNG随机数发生器

RNG主要特性 RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的 随机数。RNG的主要特性 ● 提供由模拟量发生器产生的 32 位随机数 ● 两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期 ● 通过监视 RNG 熵来标识异常行为(产生稳定值,或产生稳定的值序列) ● 可被禁止以降低功耗RNG功能描述 随机数发生器采用模拟电路实

2016-05-17 10:29:42 10410

原创 STM32F4学习笔记11——CRC循环冗余校验

关于CRC校验有以下几个方面 1.模2除(也就是异或)。 2.多项式与二进制关系(x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0,x的最高幂次为R,转换成对应的二进制数有R+1位。)。CRC基本原理 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K

2016-05-16 10:28:52 8994 1

原创 STM32F4学习笔记10——RTC实时时钟

RTC实时时钟 实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程 闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模 式的自动唤醒单元。 两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12 或 24 小时制)、星 期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。 系统可以自动将

2016-05-15 13:45:09 37408 3

原创 STM32F4学习笔记9——独立看门狗与窗口看门狗

STM32F4xx内置俩个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备可用来检测和解决由软件错误引起的故障;当计数器大道给定的超时值触发一个中断(触发中断仅适用于窗口看门狗)或产生系统复位。 地理看门狗IWDG有用们的低速时钟LSI驱动,及时主时钟发生故障他也任然有效。窗口看门狗由APB1是中国分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操

2016-05-13 11:57:26 8525 2

原创 STM32F4学习笔记8——NIVC向量中断

Cortex—M4内核支持128级中断嵌套,他有一个8位寄存器,用户可以通过这个寄存器设置中断优先级,但考虑到现在有些芯片不可能有这么多中断源,且支持这么多级中断嵌套堆栈也吃不消,大部分厂家都根据自己生产的芯片做出了调整,STM32F1和F4只是用了这个8位寄存器的高四位,低四位取零,这样=16也就是表示支持16级中断嵌套,对于这个NVIC还有一个新概念就是抢占优先级pre-emption和子优先级

2016-05-12 11:10:37 6517

原创 STM32F4学习笔记7——USART Part2

硬件流控制 使用 nCTS 输入和 nRTS 输出可以控制 2 个器件间的串行数据流。如图显示了在这种模式 下如何连接 2 个器件: 分别向 USART_CR3 寄存器中的 RTSE 位和 CTSE 位写入 1,可以分别使能 RTS 和 CTS 流 控制。RTS 流控制 如果使能 RTS 流控制 (RTSE=1),只要 USART 接收器准备好接收新数据,便会将 nRTS 变 为有效(连接

2016-05-11 10:24:18 5622

原创 STM32F4学习笔记6——USART Part1

USART又叫通用同步异步收发器,塔提供了一种灵活的方法与工业使用标准NRZ异步春航数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择,支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范以及调制解调器(CTS/RTS)操作,它还允许多处理器通信,使用多换成器配置的DMA方式,可以实现高速

2016-05-10 23:32:28 4693

原创 STM32F4学习笔记5——SysTick定时器

SysTick 定时器被捆绑在 NVIC 中,用于产生 SYSTICK 异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最

2016-05-09 15:26:09 7117

原创 STM32F4学习笔记4——外部中断

EXTI每个中断/事件都有独立的触发和屏蔽,每个中断线专用的状态位,支宽度持多达23个软件的中断/事件请求,在检测脉冲宽度低于APB2时钟宽度的外部信号参见数据手册中的电气特性部分。STM32F4xx可以处理外部或内部事件来唤醒内核(WFE),唤醒事件可以在外设的控制寄存器使能一个中断,但不在NVIC中使能,同时在M4的FPU系统控制寄存器中使能SEVONPEND位,当CPU从内核WFE中恢复后,取

2016-05-08 18:07:29 7923

原创 STM32F4学习笔记3——通用IO

STM32F4每个GPIO端口有四个32位配置寄存器(GPIOx_MOER,GPIOx_OTYPER,GPIOx_OSPEEDR和GPIOx_PUPDR),两个32位数据寄存器(GPIO_IDR和GPIO_ODR),一个32为置位/复位寄存器(GPIOx_BSRR),一个32为GPIO锁寄存器(GPIOx_LCKR),两个32为复用功能寄存器(GPIOx_AFRH和GPIOx_AFRL)。主要特性如

2016-05-07 21:10:44 5460

原创 STM32F4学习笔记2——时钟与复位系统

STM32F4采用了三种不同的时钟用来驱动系统时钟(SYSCLK) ·HSI振荡器时钟(内部时钟) ·HSE振荡器时钟(外部时钟) ·PLL时钟(锁相环时钟)这些设备有以下两种二级时钟源 ·32kHz低速内部RC,可用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。 ·32.768kHz低速外部晶振也可以用来

2016-05-06 12:47:07 5484

原创 STM32F4学习笔记1

启动文件startup_stm32f40_41xxx.s主要完成如下执行过程: ·设置堆栈指针SP= __initial_SP ·设置PC指针 = Reset_handler ·配置系统时钟 ·配置外部SRAM用于程序变量等数据储存(可选) ·跳转Jump到C库中的_mian,最终会调用(Call)用户程序main()函数

2016-05-05 22:05:23 2486

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除