【笔趣阁原声App源码】【配音阁源码】【gensim lda 源码】cmsis源码

1.探究(一)——NB-IOT基础知识
2.鸿蒙轻内核M核源码分析:中断Hwi
3.STM32L431移植华为LiteOS 物联网手把手教程
4.为什么要用CMSIS RTOS
5.如何使用stm32
6.如何在MDK下建立stm32工程

cmsis源码

探究(一)——NB-IOT基础知识

       揭开NB-IOT神秘面纱:一项革命性的物联网技术探索

       NB-IOT,即窄带蜂窝物联网,是物联网领域的一个重要分支,以其低功耗、广覆盖和低成本的特性,为万物互联提供了全新的笔趣阁原声App源码解决方案。它旨在让低能耗设备在大范围的蜂窝网络中实现高效数据连接,被誉为低功耗广域网技术。

       硬件环境构建

       在实际开发中,我们选择了江苏学蠡信息科技有限公司的无线传感器网络实验平台,这个平台集成了多种功能,如NB-IOT、LoRa和ZigBee等。其模块化设计,如更换插件,使构建传感器网络变得极为便捷。所有操作,包括NB-IOT模块的配置,都在平台左侧的配音阁源码液晶扩展板上进行。

       扩展板的左侧,关键组件包括NB-IOT核心模块LPMD,由NB-IOT模块lierda NB-G、网卡、STMFT8U6单片机以及保护模组天线构成。通过与ST-Link仿真器相连,可实现PC端的数据交互。方向按键则根据接入的不同传感器,执行相应的操作。

       中间区域的多功能传感器接口

       传感器模块接口支持多种传感器接入,配合NB-IOT技术,可实现丰富多样的功能。串口功能选择器在使用时需调整到正确位置,液晶显示器则实时显示传感器信息。

       右侧区域,电源开关和按键复位功能必不可少。每次下载新代码后,都需要通过按键复位来确保节点的gensim lda 源码初始化。

       注意事项与软件环境

       在使用NB-IOT时,需注意板子的拆卸需断电,天线尽量使用短线,电源电压需保持在V,且启动按钮需向上拨动以启动。在MDK集成环境Keil工具中,编写代码时务必正确配置头文件路径和文件类型,以确保编译顺利。HAL库作为核心驱动,为STM芯片提供了强大的功能支持,通过学习其API函数,可以极大地简化开发过程。

       STMCubeMX的入门之旅

       ST公司的STMCubeMX是一款图形化代码生成工具,它能快速生成初始化代码,让开发者专注于业务逻辑。从创建新工程、配置时钟源,到配置IO口和系统时钟,shiro 源码包每一步都有详细的指导。一个跑马灯小实验将演示如何使用STMCubeMX进行项目开发,一步步引导你创建和配置一个实际工程。

       最后,工程文件结构包括:头文件和源代码文件在Inc和Src文件夹,HAL库和CMSIS文件在Drivers文件夹,以及MDK-ARM工程文件和STMCubeMX工程文件。在Keil5中,确保下载工具配置正确后,你将在main.c中编写基础代码,如LED灯的交替闪烁,验证你的NB-IOT设备是否已成功连接和工作。

       通过上述深入的硬件和软件环境介绍,你将对NB-IOT技术有更全面的理解,并准备好在实际项目中应用这一创新技术。

鸿蒙轻内核M核源码分析:中断Hwi

       在鸿蒙轻内核源码分析系列中,本文将深入探讨中断模块,旨在帮助读者理解中断相关概念、linux getchar 源码鸿蒙轻内核中断模块的源代码实现。本文所涉及源码基于OpenHarmony LiteOS-M内核,读者可通过开源站点 gitee.com/openharmony/k... 获取。

       中断概念介绍

       中断机制允许CPU在特定事件发生时暂停当前执行的任务,转而处理该事件。这些事件通常由外部设备触发,通过中断信号通知CPU。中断涉及硬件设备、中断控制器和CPU三部分:设备产生中断信号;中断控制器接收信号并发出中断请求给CPU;CPU响应中断,执行中断处理程序。

       中断相关的硬件介绍

       硬件层面,中断源分为设备、中断控制器和CPU。设备产生中断信号;中断控制器接收并转发这些信号至CPU;CPU在接收到中断请求后,暂停当前任务,转而执行中断处理程序。

       中断相关的概念

       每个中断信号都附带中断号,用于识别中断源。中断优先级根据事件的重要性和紧迫性进行划分。当设备触发中断后,CPU中断当前任务,执行中断处理程序。中断处理程序由设备特定,且通常以中断向量表中的地址作为入口点。中断向量表按中断号排序,存储中断处理程序的地址。

       鸿蒙轻内核中断源代码

       中断相关的声明和定义

       在文件 kernel\arch\arm\cortex-m7\gcc\los_interrupt.c 中定义了结构体、全局变量和内联函数。关键变量 g_intCount 记录当前正在处理的中断数量,内联函数 HalIsIntActive() 用于检查是否正在处理中断。中断向量表在中断初始化过程中设置,用于映射中断号到相应的中断处理程序。

       中断初始化 HalHwiInit()

       系统启动时,在 kernel\src\los_init.c 中初始化中断。HalHwiInit() 函数在 kernel\arch\arm\cortex-m7\gcc\los_interrupt.c 中实现,负责设置中断向量表和优先级组,配置中断源,如系统中断和定时器中断。

       创建中断 HalHwiCreate()

       开发者可通过 HalHwiCreate() 函数注册中断处理程序,传入中断号、优先级和中断模式。函数内部验证参数,设置中断处理程序,最终通过调用 CMSIS 函数完成中断创建。

       删除中断 HalHwiDelete()

       中断删除操作通过 HalHwiDelete() 实现,接收中断号作为参数,调用 CMSIS 函数失能中断,设置默认中断处理程序,完成中断删除。

       中断处理执行入口程序

       默认的中断处理程序 HalHwiDefaultHandler() 仅用于打印中断号后进行死循环。HalInterrupt() 是中断处理执行入口程序的核心,它包含中断数量计数、中断号获取、中断前后的操作以及调用中断处理程序的逻辑。

       开关中断

       开关中断用于控制CPU是否响应外部中断。通过宏 LOS_IntLock() 关闭中断, LOS_IntRestore() 恢复中断状态, LOS_IntUnLock() 使能中断。这组宏对应汇编函数,使用寄存器 PRIMASK 控制中断状态。

       小结

       本文详细解析了鸿蒙轻内核中断模块的源代码,涵盖了中断概念、初始化、创建、删除以及开关操作。后续文章将带来更多深入技术分享。欢迎在 gitee.com/openharmony/k... 分享学习心得、提出问题或建议。关注、点赞、Star 和 Fork 到个人账户,便于获取更多资源。

STML移植华为LiteOS 物联网手把手教程

       本文详细介绍了STML与华为LiteOS的移植教程,主要针对EVB_M1开发板进行操作。首先,你需要准备硬件环境,包括EVB_M1开发板和STlink仿真器,以及MDK ARM集成开发环境和相应的芯片支持包。软件环境则涉及MDK5.和STMCubeMX工具。

       环境准备完成后,开始内核移植过程。使用STMCubeMX建立STMLRCT6裸机工程,配置引脚、时钟和功能模块。裸机工程生成后,将LiteOS源码(从GitHub下载并切换到develop分支)加入到工程中,主要关注arch、components/cmsis和kernel目录的内容。

       内核移植涉及具体步骤,如使用STMCubeMX创建工程,配置内核源码,特别是加入CMSIS OS代码、内核代码和平台相关的los_dispatch_keil.S文件。同时,需修改target_config.h以适应板级配置,创建LiteOS任务并在main.c中初始化和启动内核。

       在编译下载时,注意可能遇到Systick和pendsv函数重复定义的问题,需在相关文件中添加__weak关键字。最后,配置合适的 LiteOS 参数以优化资源使用。完成以上步骤后,你将在EVB_M1开发板上看到LiteOS的运行效果。

       欲了解更多详情,请关注相关教程和华为云原创内容。

为什么要用CMSIS RTOS

       1、集成在keil中,没有所谓移植概念。针对任何MCU都可以一键添加(试想一下,如果你将来用的不是STM,那么移植OS是不是还是那么容易);

       2、占用资源极小。大约5kB,而且针对cortex系列ARM官方优化,效率不言自明;

       3、组件丰富。常用中间件USB/network/GUI/文件系统等,ARM官方已经准备好,只需要在keil中一键添加,同样没有移植概念;

       4、仿真非常方便。在keil的debug模式中,轻松查看任务的CPU、内存占用,还有各任务的运行时间、运行状态,各任务之间如何抢占,非常直观,不需要像其他RTOS那样调用专用的查看函数;

       5、CMSIS RTOS是ARM现在热推的物联网操作系统mbedOS的基础,搞懂这个RTOS API,mbedOS更容易上手,物联网是大势所趋,ARM的在这个浪潮中的地位众所周知(软银收购ARM的核心原因),物联网以后估计会产生大量的相关工作机会;

       6、使用极简单。再次提醒,CMSIS RTOS只是一套API,有兴趣的可以去研究它封装OS源码,没兴趣的,看看API拿来就用;

       7、免费!这点和freeRTOS一样,比uc/oS更有潜力,不过freeRTOS是个人开源项目,后续升级维护缺乏商业模式,而ARM刚从软银那里搞来大笔钱,估计后续发展推广更为强劲,话说回来,如果freeRTOS真的非常优秀,ARM也可以对它进行封装。

如何使用stm

       å…³äºŽèŽ·å–ST公司的STM固件库源码,有几种方法。我们可以在百度上搜,网上有进行了分享,也可以到ST公司的官网进行查找并下载。不过,如果英文不好的话,要在官网上找到STM固件库确实是件很吃力的事。在官网上可以根据英文提示按不同条件进行筛选,具体操作如下图所示:

       END

       ç¬¬äºŒæ­¥ï¼šæ–°å»ºå·¥ç¨‹æ–‡ä»¶å¤¹â€”—《STM工程模板》

       é¦–先,新建工程文件夹《STM工程模板》,然后再在该文件夹下新建6个文件夹,分别为:《Doc》、《Libraries》、《Listing》、《Output》、《Project》和《User》。其中,《Doc》用于存放各种说明文档;《Libraries》用于存放各种库文件;《Listing》用于存放编译时产生的中间文件;《Output》用于存放生成的下载所需的文件;《Project》用于存放工程文件;《User》用于存放用户文件,即我们自己编写的各种源文件。具体情况如下图所示:

       END

       ç¬¬ä¸‰æ­¥ï¼šå‘建立的工程文件夹中添加库文件

       å°†åº“文件中的inc和src文件夹复制到模板工程文件夹下的FWLIB文件夹。具体操作情况如下图:

       å°†åº“文件中CoreSupport文件夹下的文件复制到工程模板文件夹下的CMSIS文件夹。具体操作情况如下图:

       å°†åº“文件中DeviceSupport文件夹下的相关文件复制到工程模板文件夹下的CMSIS文件夹。具体操作情况如下图:

       å°†åº“文件中startup文件夹下arm中的文件全部复制到工程模板文件夹下的startup文件夹。具体操作情况如下图:

       å°†åº“文件中Project文件夹下的相关文件复制到工程模板文件夹下的User文件夹中。具体操作情况如下图:

       ç¬¬å››æ­¥ï¼šä½¿ç”¨MDK(Keil)新建工程模板

       é¦–先得选择CPU,这个在新建工程时,会有一个选择芯片的界面,我们只需按提示以及自己的实际情况来选择就好了。具体操作情况如下图:

       æ›´æ”¹å·¥ç¨‹åï¼ˆå°†é»˜è®¤çš„工程名改为“Template”的方法:选中工程,按“F2”键)并为工程添加项目组(Add group to project)。具体操作情况如下图:

       åˆ†åˆ«å‘各个项目组中添加我们刚刚从库中复制过来的文件文件(Add files to group)。具体操作情况如下图:

       ç¬¬äº”步:工程配置

如何在MDK下建立stm工程

       1.解压stmfx_stdperiph_lib.zip 可以从ST官方网站免费下载。

       2.创建一个Demo文件夹

        2.1 新建子文件夹User,用于存放用户源程序

        2.2 新建子文件夹Project,用户KEIL工程文件

        2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。

       3. 复制源代码到Demo文件夹

        3.1 将stmfx_stdperiph_lib\STMFx_StdPeriph_Lib_V3.1.2Libraries文件整体复制到Demo文件夹下。这就是ST的标准库,是以源代码形式提供的。

        3.2 将库中的演示代码IOToggle中的文件复制到Demo\User文件夹.

       4. 新建一个Keil MDK工程

        4.1 启动Keil MDK,点击菜单 New uVision Project,然后按向导进行操作

        4.2 选择CPU类型为 STMFZE (这是安富莱STM开发板采用CPU类型)

        4.3 当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件)

        4.4 根据自己的需要修改Target名字。(名字任意)

        4.5 为了便于代码管理,在这个Project下创建几个Group (名字可以任意)

        User : 存放用户自己写的源代码

        RVMDK : 存放启动文件(汇编文件)

        StdPeriph_Driver : 存放ST标准库文件

        CMSIS : 存放CMSIS接口文件(这也是库的一部分)

        4.6 创建好Group后,我们开始依次添加文件。

       5. 修改源代码。我们将修改main.c 文件,换成我们自己跑马灯程序。

       6. 配置工程, 点击“Options”按钮

        6.1 切换到Output。

        选择Object文件夹。

        在Create Hex File 前打钩。

        6.2 切换带Listing。

        选择Listings文件夹

        6.3 切换到C/C++

        添加两个预编译宏 STMFX_HD, USE_STDPERIPH_DRIVER (这是ST库用到了这两个宏)

        修改Includes路径

        6.4 切换到Debug

        选择硬件调试器(缺省是软件仿真),我们选择Cortex-M3 J-Link调试器

        再 Run to main前打钩

        6.4 切换到Utilities

        选额调试器类型,我们选择Cortex-M3 J-Link

        点settings按钮,添加Flash编程算法,我们选择STM高密度器件,Flash容量K字节

       7. 配置工程完毕。下面开始编译。

       8. 编译OK,开始调试。

       9. 教程结束。

       å·²ç»è®²å¾—很清楚了吧,如果还有什么疑问可以再问我或者联系我。

更多内容请点击【焦点】专栏

精彩资讯