在中断关闭期间系统将不再响应任何中断,也就不能响应外部的事件。
所以中断锁对系统的实时性影响非常巨大,当使用不当的时候会导致系统完全无实时性可言(可能导致系统完全偏离要求的时间需求);
而使用得当,则会变成一种快速、高效的同步方式。
RT-thread官方源码101的bsp目录中已经包含了STM32F10x平台的移植好的源码,但却是以STM32F103ZE为平台构建的。如果需要移植到其它STM的MCU上,需要做以下几步:
1解压官网的101源码;
2修改晶振(官网的默认使用8M的外部晶振,我的板子是12M的):
第一步,打开stm32f10xh,将
#define HSE_VALUE ((uint32_t)8000000) /!< Value of the External oscillator in Hz /
修改为:
#define HSE_VALUE ((uint32_t)12000000) /!< Value of the External oscillator in Hz /
第二步,打开system_stm32f10xc,修改PLL参数,将
/ PLL configuration: PLLCLK = HSE 9 = 72 MHz /
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
修改为:
/ PLL configuration: PLLCLK = HSE 6 = 72 MHz /
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
第三步,打开你已经建立的STM32工程,选择Projects-〉Options for target ,
找到Target标签,外接的晶振默认还是8MHz,将外接的晶振参数修改为12MHz
3修改boardh里的SRAM大小(官方的默认是64K):
#define STM32_SRAM_SIZE 20
#define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE 1024)
4修改led引脚;打开ledc文件:
#else
#define led1_rcc RCC_APB2Periph_GPIOE
#define led1_gpio GPIOE
#define led1_pin (GPIO_Pin_2)
#define led2_rcc RCC_APB2Periph_GPIOE
#define led2_gpio GPIOE
#define led2_pin (GPIO_Pin_3)
5烧写运行,就能看到led闪烁了;
如果想进一步裁剪官方系统源码,可以参考rt-thread裁剪示例 位于wiki百科的->RT-Thread组件使用->其它。
何为 *** 作系统? 相信很大一部分读者对其没有一个概念,我在这里为大家,做一点解释: *** 作系统(Operating System 缩写成OS)是一种特殊的计算机系统软件,是用于管理和控制计算机系统的软、硬件资源,使用它们从分高校的工作,并使用户方便、合理的有效利用这些资源的程序的集合,是用户与计算机物理设备之间的接口,是各种应用软件赖以运行的基础。------- 简单来说: *** 作系统相当于人体整个大脑+神经网络,控制我们行走,完成各项动作。当然, *** 作系统不能进行独立的思考。
为什么要做 *** 作系统?
当前 *** 作系统电脑主流 *** 作系统: Windows,macOS,Linux的各种发行版和定制版(像某些国产 *** 作系统);
移动设备: Android(原版),iOS(苹果手机),padOS(iPad),各种Android深度定制版(小米的MIUI,华为的EMUI);
实时 *** 作系统---- 这类系统的最大特色是实时性,就是在接收数据、指令后尽快处理,得出处理结果后会在规定时间内执行。家庭用户购买的物联网设备都是安装的RTOS。RTOS的种类很多,一般用户常碰见的有:
1、RT-Thread:一个免费、开源的系统,诞生于2006年,由一名叫熊谱翔的开发者创立,目前由国内的开源社区维护,是一个地道的国产 *** 作系统,对硬件的要求很低。国内厂商出品的物联网设备,智能空调、共享充电宝、智能电热水器、智能手环、智能手表等等,大部分都运行着RT-Thread,是目前国内做得最成熟、也是装机量最大的物联网系统。
2、FreeRTOS:也是免费、开源的系统,对硬件的要求很低,获得了亚马逊的支持。国外厂商的物联网设备大部分安装的是FreeRTOS。
3、LiteOS:这是华为开发的开源系统,主要运行在支持华为智能家居服务的物联网设备上,还有华为的GT系列智能手表中。
4、QNX:一个闭源的 *** 作系统,而且授权费不低,目前归属于加拿大的黑莓公司。QNX是一个安全性、稳定性极高的 *** 作系统,长期以来被用于核电站、风力发电站、太空飞船、战斗机、CT扫描机、核磁共振扫描机等设备上。家庭用户购买到QNX设备主要有两类:一类是 汽车 ,由于QNX的高安全性、高稳定性,一直受到众多 汽车 厂商的青睐,比如宝马、保时捷、福特、小鹏 汽车 等等,QNX几乎占据车载系统市场60%的市场份额;另一类是扫地机器人,部分品牌的扫地机器人使用的是QNX系统,如iRobot。
介绍完这么多 *** 作系统,市面上已经有这么多 *** 作系统,为什么还需要做 *** 作系统呢?
我下期会带来详细介绍,感谢大家阅读。
当然可以,同时打开多个文件读取或写入都是ok的,无论是FAT文件系统还是UFFS文件系统共,可以写个软件测试一下稍后我写个软件测试一下,然后再贴出结果
\ | /
- RT - Thread Operating System
/ | \ 120 build Aug 23 2016
2006 - 2013 Copyright by rt-thread team
----------------------------------------
<boot> Booting
<boot> ----------- sys info ------------
<boot> rom = 512 KB
<boot> ram = 64 KB @0x20000000
<boot> xram = 512 KB @0x68000000
<boot> heap = 512 KB @0x68000000
<boot> freq = 72 Mhz
<boot> ----------- app info ------------
<boot> bin = 161 KB @0x08003000
<boot> mem = 45 KB (static req)
<boot> [PASS]
----------------------------------------
<xram> Testing
<xram> 16 bit
<xram> 512 KB OK
<xram> [PASS]
----------------------------------------
<SPI> Testing
<SPI> Finding Next
<SPI> ID = 00BF2541
<i2c> Configuration
<i2c> [PASS]
----------------------------------------
<cat9555> Testing
<cat9555> EXIO0 @0x40
<cat9555> [cfg = 0x00c0]
init OK!
<cat9555> [PASS]
----------------------------------------
<Nand> Testing
<Nand> ID = 2C,D3,90,A6,64
<Nand> Type = 1024M
<Nand> [PASS]
----------------------------------------
<Nor> Testing
<Nor> ID = 0001,227E,2221,2201
<Nor> [PASS]
----------------------------------------
<CH374T> Testing
<CH374T> Detect OK
<CH374T> LibInit OK
<CH374T> [PASS]
----------------------------------------
<RTC> Testing
<RTC> External Reset occurred
<RTC> No need to configure RTC
<RTC> [PASS]
----------------------------------------
<wm89xx> Testing
<wm89xx> Find chip
<wm89xx> [PASS]
----------------------------------------
<FileSystem> Init
<FileSystem> Nor FS initialized!
<FileSystem> [PASS]
----------------------------------------
os : system memory alloc 1120 bytes
flsh: UFFS consume spare data size 18
os : system memory alloc 41360 bytes
os : system memory alloc 6288 bytes
os : system memory alloc 65536 bytes
tree: found bad block 412
tree: DIR 1, FILE 21, DATA 0
<FileSystem> Nand FS initialized!
<FileSystem> [PASS]
----------------------------------------
<DSP> Testing
<DSP> [PASS]
----------------------------------------
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
>>Write /dev/FILE0TXT ok
>>Write /dev/FILE1TXT ok
>>Write /dev/FILE2TXT ok
>>Write /dev/FILE3TXT ok
finsh>>
finsh>>ls("/dev/")
Directory /dev/:
log <DIR>
devTst 4
NAND_DEMO 4
info_index 26
LOGTXT 14
TABLEDYB 35032
list_index 120
FILE0TXT 100
FILE1TXT 100
FILE2TXT 100
FILE3TXT 100
0, 0x00000000
finsh>>cat("/dev/FILE0TXT")
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 0, 0x00000000
finsh>>
如果需要代码可以再贴出来
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)