- 博客(16)
- 收藏
- 关注
原创 Cortex-M内核知识点总结
我们使用外部中断的高电平触发方式来解释中断的过程 , 如上图中断请求表示外部输入引脚高电平持续的时间 ,内核检测到中断请求后,将悬起对应的中断(中断标志置位) , 中断悬起后,可能不是立马执行服务程序 , 比如当前在临界区,退出临界区后,处理器模式切换成Handler 模式,并开始执行中断服务程序,清除中断标志,执行完成后 ,退出服务,处理器模式切换成线程模式。sp我们知道是栈指针 , 每次使用 push 指令,sp都将自动生长(减小,栈是向低地址方向生长),每次使用pop指令时,sp都将增大。
2023-06-29 15:53:26 1128 1
原创 基于ROS 履带车从零开始制做(2):科普人工智能,无人驾驶
历史推荐电影:《模仿游戏》 --讲的是图灵机的诞生第一次低谷1974 - 1980: 计算机的运算能力 计算复杂性和指数爆炸 常识与推理 (训练数据集) 。证明定理和解决几何问题对计算机而言相对容易,而一些看似简单的任务,如人脸识别或穿过屋子,实现起来却极端困难。这也是70年代中期机器视觉和机器人方面进展缓慢的原因 第二次AI低谷:1987 - 1993:专家系统维护费用居高不下。它们难以升级,难以使用,脆弱(当输入异常时会出现莫名其.
2021-11-16 19:08:07 6882 8
原创 基于ROS 履带车从零开始制做(1)-序
背景毕业近5年,从大二开始接触嵌入式(单片机),接触过不同行业,也陆陆续续做过很多项目,随着时间的推移,对嵌入式行业的认知也越来越深刻。简述一下我的工作经历。在第一份工作,做的产品是AGV(自动导引小车),主要是在汽车长通过磁条自动循迹,RFID路标,无线(wifi)上位机调度的拉货小车。 使用的ST 的单片机控制 ,主要的技术点就是 运动控制(PID),通讯协议,逻辑控制。做的最多的事就是逻辑控制,即将货物沿着轨道运送到指定的地点。其实这个专题的产生很大程度是受 第一份工作的影响,AGV确实是个很有.
2021-10-15 15:12:07 4049 1
原创 嵌入式设计模式
嵌入式嵌入式的标签多为:低配,偏硬件,底层,资源紧张,代码多以C语言,汇编为主,代码应用逻辑简单。但随着AIOT时代的到来,局面组件改变。芯片的性能资源逐渐提升,业务逻辑也逐渐变得复杂,相对于代码的效率而言,代码的复用可移植性要求越来越高,以获得更短的项目周期 和更高的可维护性。下面是AIOT时代嵌入式设备的常见的软件框架。设计模式设计模式的标签:高级语言 ,高端,架构等。在AIOT时代,设计模式与嵌入式能擦出怎样的火花?设计模式可描述为: 对于某类相似的问题,经过前人的不断尝试,总结出了处
2021-06-24 15:47:41 4048 4
原创 Unix时间戳,GPS时间戳 ,UTC时间 , 本地时间
本地时间 : 计算机显示的时间本地时间 = UTC 时间 + 时区 (北京时间是东八区,也就是 +8小时)unix 时间戳 : UTC时间都是从(1970年01月01日 0:00:00)开始计算秒数的 , 这个秒数就是unix时间戳)gps时间戳 : gps始于 1980年1月6日 , 时间连续增加不跳秒unix_timestamp = gps_timestamp + 315964800 - LEAPSEC其中315964800 为两个时间起始相差的固定秒数LEAPSEC :闰秒
2021-03-29 11:00:44 4099 1
原创 【c语言】:X宏的应用
在项目中有时会遇到这样的情况:枚举信息需要关联相关的信息。比如,定义一系列的故障类型 , 为了便于故障进行日志输出 , 一般会定义一个与之关联的字符串数组。typedef enum{ PARAM_ERR, PARSER_ERR, TIMEOUT_ERR, NOTEXIT_ERR, ...}SYS_ERR_t;const char* ERR_INFO[]={ "param error", "parser e...
2021-03-29 10:49:22 829
原创 一种简易状态机实现
API接口 void fsm_init(fsm_t* me , state_handle_t init); void fsm_polling(void); /*evt function*/ void fsm_set_timeout_evt(fsm_t* me , uint32_t timeout,uint8_t evt); void fsm_stop_timeout_evt(fsm_t* me,uint8_t evt); void fsm_set_irq
2020-12-28 18:19:19 523
原创 flash模拟e2prom实现均衡磨损(一)
物理e2prom存取操作基本实现 /*硬件接口........................................................................*/ void eeprom_write_byte(uint16_t addr , uint8_t data); uint8_t eeprom_read_byte(uint16_t addr); void eeprom_write_buffer(uint16_t start_addr , co
2020-12-01 10:10:44 2091
原创 嵌入式状态机编程-QP状态机框架与常见状态机方法
状态机基本术语现态:是指当前所处的状态。条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。传统有限状态机Fsm实现方法如图,是一个定时计数器,计数器存在两种状态,一种为设置状态,一种为计时状态设
2020-11-30 14:33:59 7172 3
原创 EC20 连入阿里云服务器
1.注册阿里云账号,可以使用支付宝账号2.登录,选择控制台 3.选择需要的云服务,这里嵌入式一般用到云服务器和物联网平台4.购买云服务器选择带UI的设置服务器登陆密码服务器已经运行起来4.登录服务器,在开始处搜索远程桌面,计算机处输入服务器公网IP,设置本地资源共享,这样远程服务器能使用本地资源输入之...
2019-08-27 21:17:39 2292
原创 python win10 安装报错解决
下载最新安装包后python3.7后安装,安装过程如下安装完成后,提示如下错误错误产生原因,之前安装过python版本,且当前安装路径和先前路径不同;或者使用python相关工具(rt-thread 的ENV工具会产生一个python路径),导致当前安装的python无法使用正确路径。解决办法:配置环境变量再次启动成功...
2019-08-10 20:00:46 544
原创 stm32f429串口DMA接收不定长数据
写在开头:这段时间在整理modbus协议时,发现没有一个比较方便使用的串口模块,因此结合之前的一些理解,将串口驱动整理出来。此串口驱动有以下特点: 发送接收均使用DMA 串口配置不需要从刷固件便能修改,方便二次开发 数据接收有环形队列缓存,能接收不定长数据帧 使用读缓存函数能获取当前缓存帧数以及每帧的数据长度. ...
2019-02-11 22:04:56 4506 1
原创 stm32定时器使用注册机制复用
1.问题描述 在使用定时器的过程中最令人苦恼的就是,定义flag,holdtime,每用一次定义一导致中断函数中标志位满天飞,时间变量在程序中随处可见。在想要移植,又不敢随便删除。程序处于高耦合状态,失去了一个.c 一个 .h的意义2.如何解决这种问题 引入注册机制。为了方便说明注册机制,举一个例子:手机在使用相机这个功能时,有一个操作:将拍摄的照片发送...
2018-11-24 23:43:31 1090 1
原创 stm32掉电存储方案
一.问题引入 在实际设备中,经常有一些数据需要掉电存储,存储的方式一般会用内部flash或者外部扩展的存储芯片。不管哪种方式,在存储的时候,都有擦除与写入的过程,而这一过程是比较耗时间的(程序烧录过程类似)。以下为常见存储芯片AT24c16写入时间间隔 。 常规的写入程序如下,使用了delay();函数//在AT24C16指定地址写入一个数据void AT24C16_W...
2018-11-09 23:14:44 19748 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人