RT-Thread

使用RTThread和TouchGFX实现DIY数字仪表(五)——同步天气信息

寵の児 提交于 2020-05-02 16:52:46
目录: 1.使用RTThread和TouchGFX实现DIY数字仪表(一)——使用STM32CUBMX5.6移植touchGFX4.13 2.使用RTThread和TouchGFX实现DIY数字仪表(二)——把TouchGFX移植到RTThread系统 3.使用RTThread和TouchGFX实现DIY数字仪表(三)——获取温湿度传感器数据 4.使用RTThread和TouchGFX实现DIY数字仪表(四)——同步网络时间 5.使用RTThread和TouchGFX实现DIY数字仪表(五)——同步天气信息 6.使用RTThread和TouchGFX实现DIY数字仪表(六)——链接阿里云物联网平台 7.使用RTThread和TouchGFX实现DIY数字仪表(七)——使用MQTT.fx模拟手机设备进行M2M设备间通信 8.使用RTThread和TouchGFX实现DIY数字仪表(八)——开发微信小程序 9.使用RTThread和TouchGFX实现DIY数字仪表(九)——TouchGFX控件使用教程 实验平台: 硬件: 野火挑战者STM32F767 V1开发版和ESP8266模块 软件: TouchGFXDesigner v4.13和 STM32CubeMX v5.6.0,MDK v5.29,RT-Thread env 工具 实验前准备工作: 1.准备一套

RT_THREAD线程的同步和通讯

↘锁芯ラ 提交于 2020-05-02 14:15:41
一 线程同步:信号量,互斥量,事件集 信号量:(任何线程都可释放,已经不存在实例,线程递归持有会发生主动挂起(最终形成死锁),优先级反转) 生成者(线程1)-共享数据(临界区)-消费者(线程2)模型中对共享数据的操作;对SPI总线的占有操作要互斥;对临界区的保护rt_hw_interrupt_disable/enable();rt_enter/exit_critical()。    信号量的等待方式:RT_IPC_FLAG_FIFO/PRIO; 信号量的值:还有多少个资源可用( 资源计数 : 停车场的空余可用车位数/生成消费模型中的信号量的初始化值=max;开始申请不能运行的初始化值 一般为0(相当于工作完成标志flag);锁( 二值信号量 ,初始可用则设为1(成功申请后减一;释放后加1); 中断与线程同步 (初始为0,中断中释放信号量加1), 而中断与线程之间的 互斥不能用锁 )。获取信号量只要大于0即可以得到资源(等待方式:直接返回(rt_sem_trytake()),挂起,超时等待,死等)。 互斥量 (信号量的一种, 锁形式存在(互斥锁) 。只有占有者释放,支持递归访问且能因采用优先级继承算法 防止线程优先级翻转 的场合 ):状态:申请获得后闭锁,释放后开锁(减一,为0可用) 事件集(一对多,多对多):进行与(关联型事件)或(独立型事件,不可累计):   32bit

rt_thread线程间通讯

半城伤御伤魂 提交于 2020-05-02 13:49:31
邮箱与消息队列: 邮箱:开销小,效率高(每次4字节,32位任意值或指向缓冲区的 指针 ),相当于MQTT中的代理。一(发)对多(收)关系;    分阻塞(邮箱不存在或超时参数不为0)和非阻塞(中断与线程间发送消息的有效手段) 发送满等待与接收空等待。 创建邮箱:分配内存大小=邮件数*4 /* 邮箱控制块 */ static struct rt_mailbox mb; /* 用于放邮件的内存池 */ static char mb_pool[ 128 ]; static char mb_str1[] = " I'm a mail! " ; static char mb_str2[] = " this is another mail! " ; static char mb_str3[] = " over " ; ALIGN(RT_ALIGN_SIZE) static char thread1_stack[ 1024 ]; static struct rt_thread thread1; /* 线程 1 入口 */ static void thread1_entry( void * parameter) { char * str; while ( 1 ) { rt_kprintf( " thread1: try to recv a mail\n " ); /* 从邮箱中收取邮件 */ if

rt_thread之时钟管理

孤人 提交于 2020-05-02 13:49:08
时钟节拍 RT_TICK_PER_SECOND:操作系统中最小的时间单位是时钟节拍 (OS Tick)。周期性中断,这个中断可以看做是系统心跳,是系统延时,超时,时间片轮转调度的基础。中断之间的时间间隔取决于不同的应用,一般是 1ms–100ms,由 SysTick 硬件定时器中断产生。 主要函数: rt_tick_t rt_tick_get( void); //非阻塞延时计量任务的运行事件 来源: oschina 链接: https://my.oschina.net/u/4364022/blog/4262046

rt_thread studio结合cubmx进行stm32驱动开发学习

丶灬走出姿态 提交于 2020-05-02 10:13:55
RT-Thread Studio 不用考虑移植问题 STM32CubeMx 快速的配置芯片外设的时钟和引脚,使驱动的开发变得简单 不依赖与rtt设备驱动框架,直接用cubmx生成的外设驱动,最终达到类似并取代keil的功能 使用 RT-Thread Studio 新建 RT-Thread 工程,注意 特殊串口的管脚重映射 问题。 使用 STM32CubeMx 配置外设和系统时钟 将 CubeMx 生成的 stm32xxxx_hal_msp.c(主要利用引脚和时钟初始化,所以自动生成代码配置中不能选择为每个外设都生成 .c/.h ) 函数复制到 Studio项目文件夹的drivers下,并将文件中 #include "main.h" 替换为 #include "board.h"。 修改 stm32xxxx_hal_config.h 文件,打开相应外设支持 # define HAL_XXX_MODULE_ENABLED 。 复制 CubeMx 工程中 main.c 文件的 void SystemClock_Config(void) ,替换 board.c 文件中,修改为与实际匹配对应的时钟配置函数,因为默认studio系统内部时钟 HSI. 使用外设基本函数进行读写等操作。 来源: oschina 链接: https://my.oschina.net/u/4370305/blog

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--PWM呼吸灯

喜欢而已 提交于 2020-04-30 13:45:56
  PWM(Pulse Width Modulation , 脉冲宽度调制) 是一种对模拟信号电平进行数字编码的方法,通过不同频率的 脉冲使用方波的占空比用来对一个具体模拟信号的电平进行编码,使输出端得到一系列幅值相等的脉冲,用这些脉冲来 代替所需要波形的设备。 一、 配置TIM的相关GPIO,选择时钟源 1.1 我们打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来进行定时器的配置,我们 以TIM8通道1为例,注意这里仍然是只配置IO,其他参数不予更改。配置完成后点击CREATE CODE。 1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。 1.3 复制刚生成的src文件夹main.c文件夹中的函数SystemClock_Config(void)到board.c。这里内核初始化时要 调用该函数进行时钟配置。 二、 修改Kconfig文件,增加menuconfig菜单中的PWM选项 三、 添加PWMn_CONFIG定义 四 、 添加PWM软件包 打开Env工具,使用menuconfig配置工程,路径为:RT-Thread online packages---> miscellaneous packages---> samples : kernel and components

《痞子衡嵌入式半月刊》 第 3 期

泄露秘密 提交于 2020-04-28 13:03:32
痞子衡嵌入式半月刊: 第 3 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly ),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 : 《痞子衡嵌入式半月刊: 第 2 期》 唠两句 今天是雨水与惊蛰交节之时,惊蛰节气在农耕上有着相当重要的意义,自古以来我国人民很重视惊蛰这个节气,把它视为春耕开始的节令。 新冠肺炎疫情在逐日好转,相信大部分人都已经开始陆续复工了,但痞子衡东家还是决定 3 月 23 号之后再考虑全面复工的事。因此这些天痞子衡在家主要是以看技术文档写技术文档以及线上客户支持为主,最近原创文章产出比较惊人,一周能达到 3 篇,写文章这种事,写作过程中比较痛苦,但写完还是成就感满满的。 最近痞子衡不断接到技术群的朋友约稿,趁着在家办公的时机,痞子衡会加快写作,尽早完成大家的约稿。 本期共收录 3条资讯、4个项目、2个工具、1个RT产品,希望对你有帮助! 资讯类 <font color="red">1、面向音频/语音应用的恩智浦 i.MXRT600 已上市</font> 恩智浦半导体于 Embedded World 2020 上宣布其旗下主打音频/语音应用的全新跨界处理器 i.MXRT600 已开始正式供货

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--ADC电源监控

做~自己de王妃 提交于 2020-04-22 01:17:23
一、 配置ADC响应的GPIO   ADC是A/D转换部件,单片机不能直接处理模拟量,所以需要ADC将模拟两转换为数字量后进行处理。在使用单 片机进行模 拟数据处理的过程中,ADC至关重要。   1.1 在STM32F407IGT6中分别是PC4(ADC1_IN14)、PC5(ADC1_IN15)、PF5(ADC3_IN15)、PF6(ADC3 _IN4)、 PF7(ADC1_IN15),我们 打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来 进行ADC IO配置, 注意这里仍然是只配置IO,其他参数不予 更改。配置完成后点击CREATE CODE。   1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。 二 、 修改Kconfig文件,增加menuconfig菜单配置中ADC选项 三、 打开menuconfig,使能ADC 四、 使用scons命令生成MDK5工程,打开并进行编译 五、 烧录进iCore3核心板   烧录进去后我们可以发现能够找到ADC设备。例如读出通道14的值是0x52C,将其转变成模拟量:(1324/4096) *2.5*6=4.848(V) 六、 源代码   源代码下载请移步链接: 至此,ADC设备驱动添加完毕,并正确读数。 来源: oschina 链接:

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--BSP制作

三世轮回 提交于 2020-04-19 14:39:05
一、 源代码下载 下载最新版的RT-Thread源代码: https://www.rt-thread.org/page/download.html 二、 工程文件简介 2.1 我们将下载好的源码进行解压,可以看到共有以下文件夹,在这里我们只关注bsp文件夹下的内容。其他文件夹的内容暂时先不理会,有兴趣的伙伴可以先了解一下。 2.2 打开bsp文件夹,我们发现RT-Thread支持n多种厂商的MCU,iCore3 ARM+FPGA双核心板ARM采用的是ST的STM32F407IGT6,因此在这里我们打开stm32的文件夹。 2.3 打开stm32文件夹,可以看到这些文件夹可以大致分为3类,分别为docs文件夹,docs文件夹为官方提供的一些图文教程(相当详细);libraries文件夹,libraries文件夹为STM32的HAL库文件及RTT编写的STM32一些常外设的驱动文件;剩下的为各开发板的最简单的bsp工程。 三、 BSP工程制作 3.1 CubeMX配置 需要创建一个基于目标芯片的CubeMX工程。默认的CubeMX_Config文件夹中,双击打开CubeMX_Config.ioc工程,注意看文件路径。 打开CubeMX选择自己板子上具体的芯片型号,iCore3是STM32F407IGT6。 打开RCC和SYS设置 ARM_LED引脚设置

rtthread添加驱动方法

可紊 提交于 2020-04-06 08:49:19
以stm32l475-atk-pandora开发板添加PC6为pwm为例,说明rtthread添加menuconfig中没有的驱动的方法 打开目录rtthread\rt-thread-master\bsp\stm32\stm32l475-atk-pandora\board\CubeMX_Config中的STM32L475VE.ioc文件 配置需要添加的外设,这里主要是需要用到stm32l4xx_hal_msp.c文件中的GPIO配置,其他CubeMx生成的文件不会再rtthread sdk中用到。 修改Kconfig文件,可以参考Kconfig中已经定义的文件来完成。 完成步骤3后menuconfig的配置文件中可以找到新添加的配置。                                                        最后就可以在代码中使用该驱动。 来源: oschina 链接: https://my.oschina.net/u/4264470/blog/3220141