RT-Thread

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--IWDG看门狗

℡╲_俬逩灬. 提交于 2020-10-27 03:26:40
  单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗就是为了避免这种情况的发生。看门 狗 的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号,便实现处理器的自动复位重启。 一、 通过CubeMX开启IWDG 1.1 我们打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来进行配置,直接点击 Syst em Core下的IWDG,在Mode中将Activated选中即可。配置完成后点击CREATE CODE。 1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。 1.3 复制刚生成的src文件夹main.c文件夹中的函数SystemClock_Config(void)到board.c。这里内核初始化时要 调用该函数进行时钟配置。 二、 修改Kconfig文件,在menu "On-chip Peripheral Drivers"下增加menuconfig菜单中的WDT选项 三、 在Env图形配置工具中开启iwatchdog 打开Env工具,使用menuconfig配置工程,路径为:Hardware Drivers Config -> On-chip Peripheral Drivers ,空格选中即可。 在Env中输入命令:scons --target

比赛

血红的双手。 提交于 2020-10-27 02:27:57
我的历程 大一时参加协会,学习C语言和51单片机. 大一暑假留校开始学习STM32和参加比赛,大二一整年忙于各种比赛。 大三上学期脱离老学长的庇护,开始带学弟比赛,由于疫情原因,所有比赛推迟。 大三下学期开始学习RT-Thread物联网操作系统和嵌入式Linux驱动开发。 比赛需要的技能 编程语言: C/Python 单片机操作: 输入/输出/外部中断/串口/定时器中断/PWM/输入捕获/ADC/DMA/IIC/SPI。 这些基本操作一定要熟悉掌握,了解相对应的库函数的含义和用法,完全可以适应所有比赛。 比赛常用器件: 数字舵机,串口舵机,编码电机,步进电机(不经常用)。 灰度传感器,姿态传感器,激光测距,0.96OLED。 麦克纳姆轮或者全向轮运动分解。(重点学习,车类竞赛经常使用)。 OpenMV(处理视觉)。 其他技能 三维建模软件(SolidWorks),二维建模软件(AudoCAD),3D打印机使用。 PCB绘制(推荐使用立创EDA),贴片焊接。 PID算法,反馈调节。 日常用到的工具: 逻辑分析仪(目前来说20元的就行) 万用表(30元左右的就行) 焊台,风枪(贴片焊接使用) 以后的发展方向: 1.实时操作系统。RT-Thread/uCOS/FreeRTOS/RTX5 2.FPGA。现场可编程门阵列。 3.嵌入式Linux驱动开发。推荐韦东山老师的Linux视频。 4

1024程序员节开源技术英雄会,参会“英雄榜”发榜

随声附和 提交于 2020-10-25 04:54:46
10月23-26日,由CSDN等多家单位精心筹划的“长沙 · 中国1024程序员节”将盛大举行。程序员节活动以开源为主议题,包括2场岳麓尖峰对话;2020开源技术英雄大会;10+场热门技术分论坛/峰会;创意集市;体验感超强的科技文化嘉年华、最HIGH时刻的开源之夜。内容聚焦开源技术及生态建设、操作系统及硬件创新、开源社区及商业化发展等多个重要话题。 尤其是此次重磅推出的“开源技术英雄会”,将以2020中国开源技术英雄的年度大聚会为核心,重磅邀请卓越的开源技术领袖和贡献者齐聚长沙,以“洞悉开源新变量”为主题,展开主题演讲与深度讨论。开源英雄群英荟萃,2020开源技术英雄会,必将成为一场交流真知灼见的开源生态大会。 CSDN作为中国专业的开发者社区,将联手多家单位,广发英雄帖,汇聚国内顶级开源英雄、开源项目、开源企业,共谱硬核科技与开源文化大图谱。 百余位开源英雄齐聚 , 岳麓山下技术“过招” 当前科技的发展,打造中国自主可控的开源生态,尤其是核心技术栈和开源生态系统,势在必行。藉由1024程序员节的召开,100余位卓越技术英雄齐聚“2020开源技术英雄会”,他们带来武功秘籍,在岳麓山下分享技术洞见,切磋过招! 最终出席嘉宾以现场为准 2020开源技术英雄会汇聚了来自学术界的顶尖学者、知名开源社区的领军人物,以及华为、阿里、百度、腾讯、滴滴、中科创达、海尔等顶尖企业

RT-Thread学习记录2 线程的创建

☆樱花仙子☆ 提交于 2020-10-24 08:12:11
看视频笔记如下。。。。 在RT-Thread中,与上述小任务对应的程序实体就叫做“线程”(或任务) ,RT-Thread就是一个能对这些小“线程”进行管理和调度的多“线程”操作系统。 线程是实现任务的载体,它是RT-Thread中最基本的调度单位,它描述了一个任务执行的运行环境,也描述 了这个任务所处的优先等级。 RT_Thread中,线程有三部分组成:线程代码(入口函数),线程控制块,线程堆栈。 线程代码如下: 1.无限循环模式 void thread_entry(void *parameter) { while(1) { /*等待事件的发生*/ /*处理事件*/ } } 2.顺序执行模式 void thread_entry(void *parameter) { /*事务1处理*/ /*事务2处理*/ /*事务3处理*/ } 线程控制块 线程控制块是操作系统用于管理线程的一个数据结构,它会存放线程的一些信息,例如优先级、线程名称、线程状态等,也包括线程与线程之间连接用的链表结构,线程等待事件集 合等。 struct_thread struct_thread *rt_thread_t //线程控制块记录线程的一些信息 线程栈 RT-Thread每个线程都具有独立的栈空间,当进 行线程切换时,系统 会将当前线程的上下文保存在线程栈中,当线程要恢复运行时,再从线程栈中读取上下文信息

RT-Thread 内核学习--信号量的初步使用

蓝咒 提交于 2020-10-24 00:40:49
RT-Thread 内核学习–信号量的初步使用 参考文档 :《rtthread_manual.zh2018》 关于信号量的简单实践使用 关于一个信号量的使用,主要有三步: ①创建一个信号量sem。 ②释放一个信号量sem。 ③捕获到一个信号量sem 。 ①信号量的创建 函数:rt_sem_init(rt_sem_t sem, const char *name, rt_uint32_t value, rt_uint8_t flag) sem 是struct rt_semaphore sem结构体所定义的信号量,name可以根据开发者的需求取名,value一般取0即可, flag一般按照RT_IPC_FLAG_FIFO(队列即可)。 //举例代码 //第一步 struct rt_semaphore sem_syq ; rt_sem_init ( & sem , "xxx" , 0 , RT_IPC_FLAG_FIFO ) ; ②信号量的释放 函数:rt_sem_release(rt_sem_t sem); sem就是刚才创建的信号量名称; //第二步 # define Normal 0x01; if ( syq . phase == Normal ) { rt_sem_release ( sem_syq ) ; } ③信号量的捕获 函数:rt_sem_take(rt_sem_t sem

RT-Thread学习记录7 信号量的使用

旧巷老猫 提交于 2020-10-23 17:37:31
以下为看视频笔记.......... 1. 信号量(IPC) 在嵌入式系统中运行的代码主要包括线程和中断(ISR),在它们的运行过程中,它们的运行步骤有时需要同步(按照预定的先后次序运行),它们访问的资源有时需要互斥(一个时刻只允许一个线程访问资源),它们之间有时也要彼此交换数据。这些需求,有的是因为应用需求,有的是多线程编程模型带来的需求。 操作系统必须提供相应的机制来完成这些功能,我们把这些机制统称为进(线)程间通信(Internal Process Communication IPC) ,RT-Thread中的IPC机制包括信号量、互斥量、事件、邮箱、消息队列。 . 通过IPC机制,我们可以协调多个线程(包括ISR)“默契”的工作,从而共同完成一个整项工作。 2. 例子说信号量 以生活中的停车场为例来理解信号量的概念: ①当停车场空的时候,停车场的管理员发现有很多空车位,此时会让外面的车陆续进入停车场获得停车位; ②当停车场的车位满的时候,管 理员发现已经没有空车位,将禁止外面的车进入停车场,车辆在外排队等候; ③当停车场内有车离开时,管理员发现有空的车位让出,允许外面的车进入停车场;待空车位填满后,又禁止外部车辆进入。 在此例子中,管理员就相当于信号量;管理员手中空车位的个数就是信号量的值;停车位相当于公共资源,车辆相当于线程。车辆通过 获得管理员的允许取得停车位

基于事件型表驱动法菜单框架之小熊派简易气体探测器实战项目开发(中)

萝らか妹 提交于 2020-10-22 15:50:12
上次我们分享了事件驱动型的菜单框架,也实现了一个基本的小项目,如下: 基于事件型表驱动法菜单框架之小熊派简易气体探测器实战项目开发(上) 但是怎么看怎么都觉得界面不爽,单纯显示文字的方式实在是太单调了,如果想要显示颜色丰富的图片,MCU资源受限又很难直接在程序中直接定义图片大数组。 于是,我选择在SD卡中放图片,通过Fatfs去读取SD卡中的图片来进行显示,图片都是我自己在阿里图库上找的开源素材,然后用PS自己P的: 废话不多说,来看看实际效果吧!演示视频如下: 这样看起来效果就舒服一点啦。 1、新增功能项 本节分享的内容相较于上篇文章修改/增加了如下功能: 底层配置 修改LCD寄存器,提升LCD刷屏速度 增加Fatfs、SD卡读写功能 应用逻辑 增加模拟长按开机识别 增加开机LOGO以及其它UI的显示 增加菜单(阈值设置、设置、调试模式、仪器信息) 1.1、关于底层配置 1.1.1、提升屏刷新速度 由于要刷图,所以只能想办法尽量提升屏的刷新速度,于是在LCD手册里有这么一个寄存器,可以提升屏的刷新速度: 在LCD驱动初始化代码里,这个寄存器默认配置的是60Hz,也就是0x0F这个值 /* Frame Rate Control in Normal Mode */ LCD_Write_Cmd(0xC6); // LCD_Write_Data(0x0F); //60HZ LCD

FreeRTOS V10.4.0更新了哪些功能?

我的未来我决定 提交于 2020-10-17 19:50:21
前几天,FreeRTOS 从V10.3.1 升级到了 V10.4.0,其中更新并增强了不少内容。 FreeRTOS源码Github地址: https://github.com/freertos/freertos (公号不支持外链接,请复制链接到浏览器打开) 一、版本管理 到目前为止,FreeRTOS zip文件发行版都带有其所包含的内核发行版的版本号。例如,FreeRTOSv10.4.0.zip包含FreeRTOS内核的版本10.4.0。但是,内核不是zip文件中包含的唯一单独版本化的库,并且在将来的发行版中,zip文件中的库数将增加。因此, 为了更好地反映zip文件实际上包含集成在一起的库的集合,将来的发行版将 使用日期戳版本 而不是内核版本。 二、向后兼容 FreeRTOS升级做了很多改变,但为了向后兼容,除了注释版本之外,在升级改版的代码中做了一定管理,比如:trcConfig.h文件中将TRC_CFG_FREERTOS_VERSION设置为TRC_FREERTOS_VERSION_10_4_0。 三、代码格式化 现在FreeRTOS代码格式化现已“自动化”,以促进 Git中的协作开发。自动格式化的代码不相同,保留原始格式约定。最明显的是现在 使用空格代替TAB 。 四、主要增强功能 这里有几点内容: 1.任务通知 在FreeRTOS V10.4.0之前版本

继AMD之后,英特尔也表态可供货华为了!

邮差的信 提交于 2020-10-12 01:55:32
华为芯片断货再迎转机。 9月21日,据最新消息,英特尔官方表示,已获得向华为供货许可! 近日,英特尔、美光科技、韩国三星、SK海力士、台积电、联发科,中芯国际等厂商均向美国商务部提交了在9月15日以后继续对华为供货的许可证申请。目前已经获得许可的有AMD、英特尔。 实际上,华为并非将希望全部寄托于国外芯片厂商。据报道,针对芯片断供,华为目前暂时没有B计划,但具体对策主要还是寻求国产替代方案。 业内人士称:美国颁布针对华为的修订版禁令,旨在遏制其自造芯片的能力,此次Intel获得许可,更能说明这一点。 对于芯片断供的问题,华为多位高管都曾表明态度。华为消费者业务软件部总裁王成录在日前的大会上表示,“芯片问题涉及到的技术非常复杂,华为在这方面,困难一定有,毫无疑问。” 他认为,芯片问题同时也给了企业反思,没有选择就是最好的选择。“限制反而让大家有一个非常好的机会,危、机并存。” Gartner数据显示,2019年全球半导体收入约4180亿美元,前十中五家为美企: 波士顿咨询集团(BCG)2020年3月份发布的《限制对华贸易会如何结束美国在全球半导体行业的领导地位》的报告中称:在未来三到五年,如果美国继续对中国目前实体名单上赫然在列的公司使用含有美国技术的产品施加限制,美国半导体公司可能会失去8%的全球份额和16%的收入。 如果美国完全禁止半导体公司向中国客户出售产品

面试100多位软件工程师后的建议~

眉间皱痕 提交于 2020-10-09 07:55:16
作者 | Hugo Rocha 译者 | Sambodhi 策划 | Tina 本文最初发表在 Medium 博客上,经原作者 Hugo Rocha 授权,InfoQ 中文站翻译并分享。 这种尴尬和紧张的关系,一方面是在完成赫拉克勒斯(Hercules,希腊神话最伟大的半神英雄,男性的杰出典范,伟大的赫拉克勒斯后裔祖先)的 12 项“不可能完成的”任务后成为英雄,另一方面是在马戏团训练过的动物毫无意义地连续跳呼啦圈,我们轻描谈写地称之为求职面试。我们都讨厌面试,然而,面试却是我们职业生活中无法回避的事实。 当我第一次天真地、冒险地进入软件工程面试这一令人不舒服的、不友好的世界时,没过多久,我就觉得我在 2~3 个小时内判断软件工程师的能力就像法医一样精准。 然而,我总是想知道坐在另一边的人是什么样的人,需要什么才能知道一个工程师是否适合这个角色。在过去的几年里,我进行了 100 多次软件工程技术面试,尽管每家公司都有自己独特的面试流程,但还是有一些人们容易犯的常见错误。下面是我关于如何避免犯下这些错误的忠告。 优秀的软件工程师 成功之路和失败之路几乎一样。(The road to success and the road to failure are almost exactly the same.) ——科林・雷克斯・戴维斯(Colin R. Davis,英国指挥家)