自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 10-临界代码各种保护方式比较

UCOSIII 临界代码各种保护方式比较为什么要进行临界代码保护呢,打个比方。比如有两个任务都要使用打印机,根据常识应该知道肯定是一个任务用完后另外一个任务才能用,不然两个任务都有可能打印到同一张纸上,这肯定是我们不愿意看到的。这只是临界代码保护的其中一个例子--用于保护共享资源,除了打印机,还有IO外设等也是共享资源。有些对时间要求较高的时序也不能打断,必须连续运行,比如单总线协议。还...

2019-11-10 12:01:06 387

原创 9-钩子函数(介入函数)

UCOSIII 钩子函数(介入函数)UCOSIII的钩子函数有8个,有些书籍会翻译为介入函数,其实是同一个意思。什么是钩子函数呢,也许是因为函数名字直译过来就是钩子吧。具体作用还真的不好定义,还不如直接看这几个函数的具体功能作用来得快。在介绍具体的钩子函数前,先介绍下钩子函数的初始化函数,这个初始化函数可以一次性对所有钩子函数进行初始化,函数原型如下;void App_O...

2019-11-10 11:58:20 1138 1

原创 8-系统内部任务

UCOSIII 系统内部任务在一个带UCOS的工程中,除了我们创建的任务,UCOS其实也会自动地创建任务。就是说,UCOS运行的任务数等于我们创建的任务加上系统创建的任务。系统创建的任务有5个;空闲任务时钟节拍任务统计任务软件定时器任务中断服务管理任务其中两个是必须创建的,空闲任务和时钟节拍任务,只要我们使用了UCOS系统,那这两个任务就会被创建。另外...

2019-11-10 11:53:09 627

原创 7-时间片轮转调度

UCOSIII 时间片轮转调度在UCOS中,任务调度可以理解为任务切换,当心跳时钟到来时,系统就会把当前任务的现场保存起来,放到本任务的堆栈中,这个步骤和进中断前的push压栈很相似,不过现场状态是保存在本任务的堆栈中而不是中断堆栈中。然后CPU去执行高优先级的就绪任务。比如有两个任务,任务A和任务B。B的优先级比A的高,现在正在运行任务A,而任务B在等待延时结束。心跳时钟来了,系...

2019-11-10 11:15:49 2866

原创 6-临界代码保护

UCOSIII 临界代码保护在实际使用过程中,可能有些代码是需要连续运行,不能被打断的,这些代码局需要临界保护起来。常见的就是新建任务的时候一般都把代码保护起来,还有有些对时间要求很严格的协议传输的时候也不能被打断,比如说单总线时序、iic时序等,这些代码也是需要连续运行的。UCOS临界代码保护有两种方式,关中断和关调度器。至于是使用关调度器还是关中断的方式来保护临界代码,有宏O...

2019-11-10 11:05:25 391

原创 5-软件定时器

UCOSIII 软件定时器软件定时器原理 软件定时器相关函数汇总 总结函数的参数和用法及注意事项 举个栗子在不带操作系统的时候,如果想要定时一般会使用芯片上的硬件定时器,但是在UCOS中,我们可以使用软件定时器,而把硬件定时器留作他用,而且UCOS的软件定时器是没有数量限制的,当然前提是内存够大才行。虽然软件定时器不占用硬件定时器的资源,但是他也有个缺点,就是精度不高...

2019-11-10 11:01:29 891 1

原创 4-任务的挂起与解挂

UCOSIII 任务的挂起与解挂当某个任务在等待一些事情的时候,比如信号量、消息队列(以后会用到的)等,或者调用延时函数,该任务会进入挂起的状态,但是这是系统自动把任务挂起来的,不需要我们手动干预。虽然系统很多时候都可以把任务挂起来,但是有时候我们想手动把任务挂起来了该怎么办呢,其实UCOS已经给我们预留了任务挂起和解挂的API函数,1、OSTaskSuspend()2、OSTa...

2019-11-10 10:51:18 1973

原创 3-(时间管理)延时函数

UCOSIII 时间管理(延时函数)系统频率设置方法及延时函数原理 各个函数参数用法介绍,及注意事项 栗子功能+代码延时函数会涉及到系统滴答时钟,所以有必要介绍下系统滴答时钟的原理。系统里有一个计数变量OSTickCtr。系统滴答时钟是由滴答定时器产生的,其实也就是通过一个定时器来产生特定时间间隔的中断,每产生一个系统时钟中断这个变量就自加1。而延时函数就是用这个OSTick...

2019-11-10 10:46:30 3067

原创 2-中断处理

这个工程只有两个任务,第一个任务老规矩是用来创建其他任务的,第二个任务是LED闪烁任务,提示系统正在运行。所以任务1创建完LED任务后就把自己删除了,只有LED任务在正常运行。在main函数初始化的时候把定时器3初始化,在定时器3的中断处理函数中向串口发送一些信息,在电脑串口助手中可以查看中断处理是否正常Main.c文件#include "sys.h"#include "delay.h...

2019-11-10 10:28:42 159

原创 1-任务创建和删除

UCOSIII 任务创建和删除这篇总结只是概述任务的创建和删除,至于系统的原理、前后台系统的区别、系统移植、系统初始化配置等以后会用专门的文章来总结。系统初始化大概流程各个外设的初始化 系统初始化,其实就是调用一个系统初始化函数就好 OSInit() 进入临街代码保护 OS_CRITICAL_ENTER() 创建任务 OSTaskCreate() 退出临界代码保护 OS_...

2019-11-10 10:24:54 839

原创 22-STM32F1-WIFI模块ESP8266

ESP8266总结 Esp8266是一个无线wifi模块。有三种模式:AP模式、STA模式和AP、STA两种模式共存,可以用uart串口通信。Esp8266有40多个AT指令,但是常用的没几个,这里就不介绍了。需要注意的是;配置好了参数后一般都需要复位一下设置才能生效。  直接来几个栗子吧。每个实验前恢复出厂设置是为了避免各个实验相互干扰,毕竟设置是可以掉电记忆的。这几个实...

2018-08-23 20:42:26 3870 1

原创 21-STM32F1-HC-05蓝牙模块

HC-05蓝牙模块 HC-05模块是一款高性能主从一体蓝牙串口模块,可以同各种带蓝牙功能的电脑、蓝牙主机、手机、 PDA、 PSP 等智能终端配对,该模块支持非常宽的波特率范围: 4800~1382400,并且模块兼容 5V 或 3.3V 单片机系统,可以很方便与您的产品进行连接。 因为我用的是HC-05的原装模块,所以还需要自己把引脚引出来。一共需要外接7个引脚,见下表; ...

2018-08-23 20:40:32 1889

原创 20-STM32F1 2.4G_24L01模块

STM32F1 2.4G无线通信模块24L01是一个2.4G的无线通信模块,空旷地实测通信距离70-80米左右。24L01有6个通道,也就是一个无线模块最多可以同时接收6个无线模块的数据,一个通道对应一个。地址一共40位,但是只有通道0可以自由设置地址。其他的5路通道只能设置最后8位地址,前面的32位地址是固定的。自动应答功能,自动重发功能(最多16次),(实测;距离25cm,最...

2018-08-23 20:39:27 671 1

原创 18-STM32F1-内部FLASH存储数据

STM32F1 -内部FLASH编程STM32的FLASH不但可以存储程序,而且还是可以当EEPROM用。32的FLASH一般都比较大,FLASH的前面部分可以放代码,而最后几页可以存储数据,用于掉电记忆还是挺不错的。STM32的FLASH是按页类操作的,也就是说每次擦除都必须整页擦除,而不能只擦除一页的一部分,读数据的话不存在这种限制。大容量的芯片每页是2k,而小容量的芯片每页是1k。S...

2018-08-23 20:36:34 7229

原创 16-STM32F1-红外解码

STM32F1-输入捕获以下部分内容来自正点原子的书籍红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以,在设计红外线遥控器时,不必要像无线电遥控器那样,每套(发射器和接收器)要有不同的遥控频率...

2018-08-23 20:33:40 2746

原创 15-STM32F1 SPI W25Q128

STM32F1 SPI W25Q128关于SPI的介绍,看连接http://blog.csdn.net/ce123_zhouwei/article/details/6897293,在我的收藏单片机分栏中也有这篇文章《SPI总线协议介绍》本实验只是想了解下SPI通信,所以关于从设备W25Q128就不介绍了,网上有篇文章介绍W25Q128说明的挺详细的http://blog.sina.com.

2018-01-23 15:23:56 1686

原创 14-STM32F1 iic 24c02

STM32F1 iic 24c02IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU 与被控 IC 之间、 IC 与 IC 之间进行双向传送, 高速 IIC 总线一般可达 400kbps 以上。I2C 总线在传送数据过程

2018-01-23 15:22:40 583

原创 13-STM32F1 DAC输出

STM32F1 DAC输出数字/模拟转换模块(DAC)是12位数字输入,电压输出的数字/模拟转换器。 DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。 DAC工作在12位模式时,数据可以设置成左对齐或右对齐。 DAC模块有2个输出通道,每个通道都有单独的转换器。在双DAC模式下, 2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。 DAC可以通过引脚输

2018-01-23 15:21:46 4059

原创 11-STM32F1 ADC

STM32F1 ADCSTM32 拥有 1~3 个 ADC(STM32F101/102 系列只有 1 个 ADC),这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。 STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右

2018-01-23 15:19:22 975

原创 10-STM32F1-RTC and BKP

STM32F1-RTC and BKP实验平台;正点原子精英板,部分内容来自原子哥的书STM32 的实时时钟(RTC)是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器,最大计数为4294967296 ,如果把计数器设置为秒计数,那么最大可以计时136年左右。这个计数器只是单纯的计数功能,如果要转化为年月日的话还是得手动转化,转换过程中还要考虑闰年问题等。RTC

2018-01-22 15:52:11 607

原创 9-STM32F1-输入捕获

STM32F1-输入捕获以下部分内容来自正点原子的书籍输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。 STM32 的输入捕获,简单的说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_

2018-01-22 15:50:50 1915 2

原创 8-STM32F1-pwm输出

STM32F1-pwm输出以下内容部分摘抄自原子哥的书籍,开发板用的是正点原子的精英板STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM 输出! 这里使用TIM3输出4

2018-01-22 15:49:48 4446 2

原创 7-STM32F1-定时器中断

STM32F1-定时器中断STM32F1 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成。 STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。 STM32 的每个通用定时器都是完全独立的

2018-01-22 15:48:47 1323 1

原创 6-STM32F1 -独立看门狗

STM32F1 -独立看门狗(这里有部分内容是拷贝原子哥的)STM32F1的看门狗需要手动打开,而且打开后不能关闭,想要关闭看门狗唯一的办法是复位,然后启动时不打开看门狗。所以使用看门狗前需要考虑清楚。STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部 RC 时钟,所以并不是准确的 40Khz,而是在 30

2018-01-22 15:47:22 713

原创 5-STM32F1 外部中断

STM32F1 外部中断STM32F1中断系统(这部分是直接拷贝原子哥的书上的)CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。但 STM32 并没有使用 CM3 内核的全部东西,而是只用了它的一部分。STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。而我们常

2018-01-22 15:46:12 1078

原创 4-STM32F1 串口通信-中断方式

STM32F1 串口通信-中断方式本实验是在上个实验《STM32F1 串口通信-查询方式》的基础上做的,所以这里只总结增加的中断的部分,串口IO和串口初始化和上个实验一样。增加的步骤1,在主函数中进行中断分组2,在使能串口前配置串口中断,3,使能串口中断后再使能串口4,编写串口中断函数5,串口中断函数中查询接收状态以确认是相应中断发生6,接收数据,发送数据7,串口中断标志位不需

2018-01-22 15:44:42 3701

原创 3-STM32F1串口通信-查询方式

STM32F1串口通信-查询方式STM32F1的串口有好几组,STM32的串口还有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持 LIN、 支持调制解调器操作、 智能卡协议和 IrDA SIR ENDEC 规范、具有 DMA等。 虽然有这么多功能,但是这里为了总结串口的原理,采用最简单的查询的方式和电脑进行通信。其实原子哥的《STM32F1开发指南-库函数版本》已经解释的非常详细

2018-01-22 15:43:32 6908 3

原创 2-STM32F1-按键输入

STM32F1 按键输入STM32F1的IO输入和IO输出都差不多,区别就是把IO模式改为输入,还有在输入时好像是不用设置IO翻转速度的。本实验用的是正点原子的精英板,按键接在PE4上,LED接在PB5上,按一下按键LED状态翻转一次。按键在一定程度上进行了消抖,这个延时消抖只是为了演示用,在项目中估计没有谁会这样进行按键消抖。步骤1,打开IO时钟2,选引脚3,设置引脚状态4,O

2018-01-22 15:37:57 732

原创 1-STM32F1-LED

STM32F103 LED实验STM32F1的IO口每组最多有16个IO,每个IO有8种输入输出方式,分别是1、输入浮空2、 输入上拉3、 输入下拉4、 模拟输入5、 开漏输出6、 推挽输出7、 推挽式复用功能8、 开漏复用功能 在使用IO前一定要打开相应的IO时钟,本实验是利用IO口控制LED灯闪烁,LED灯接在PB5上,用的是原子的精英板。IO操作步骤1,打开IO口时

2018-01-22 15:34:49 405

TBAcSerial-V0725

TBAcSerial-V0725

2023-08-02

11-pdf2word-exe

11-pdf2word-exe

2023-08-02

4-v2.0-pdf-merger-exe

4-v2.0-pdf-merger-exe

2023-08-02

Python thinker串口助手V2.0-0524

一个串口上位机,带rx数据解析和tx控制

2023-05-24

空空如也

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

TA关注的人

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