登录社区云,与社区用户共同成长
邀请您加入社区
本文是对[rust嵌入式开发](https://zhuanlan.zhihu.com/p/677077634)的补充,就当时遗留的一些问题进行增补与修正
前言写文章的目的是想通过记录自己的学习过程,以便以后使用到相关的知识点可以回顾和参考。一、硬件组成框架上图 内部MAC + 外部PHY + RJ45的组合就组成了一个完整的嵌入式网络接口硬件。MAC跟PHY的通讯通过MDIO总线 和 MII/RMII/GMII/RGMII等接口完成,其中驱动程序可以通过 MDIO 总线访问 PHY 芯片的任意一个寄存器,来完成对PHY的配置,而网络数据传输则通过
一、练习使用VScode(一)在ubuntu18.04版本安装vscode1.在ubuntu桌面找到应用中心2.在软件中心中,搜索Visual Studio Code3. 在页面中就可以直接选择安装(二)在ubuntu中用vscode编译调试C\C++1、安装vscode的C\C++插件2、按ctrl+p调出命令行,在上面输入ext install cpptools,下载C/C++插件3、配置调试
线程是操作系统调度的最小单位,是进程内的实际运行单位。一个线程代表进程中的一条执行路径(或控制流),在同一个进程中可以创建多个线程,这些线程可以并发执行,完成不同的任务。例如,某应用程序可以将两个并发运行的任务(如任务 task1 和 task2)分别分配给两个不同的线程。
关注、星标公众号,直达精彩内容来源:网路素材有很多朋友经常会问,成为高级嵌入式系统硬件工程师,需要做到哪些呢?那么,我们就先从嵌入式硬件工程师是个什么概念入手。一、如何理解“嵌入式”的概念呢?1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类...
题目编程实现用GPIO口模拟PWM输出,PWM频率2kHz,占空比0%~100%连续可调,调节精度32-bit。 利用上述思路,实现led灯的明暗调节,实现呼吸灯效果。(基于f103ze)编程使用cubemx配置环境,(个人习惯预分频设为1,counter period设为36000-1),配置好后main.c中编写函数定时器配置时钟配置其他配置while (1){int i=0;while (p
随着计算机嵌入式的不断发展,越来越多的人开始投向计算机嵌入式领域,然而计算机嵌入式当然离不开嵌入式系统啦,下面尚观教育小编给同学们简单谈一谈嵌入式系统定义及特点。 嵌入式系统的定义 嵌入式系统的定义为:以应用为中心、以计算机为基础、软硬件可裁剪、适用于应用系统。对功能、可靠...
蓝桥杯嵌入式组开发——USART初始化时钟,中断对RX(A3),TX(A2)口进行配置USART配置中断使能打开总开关1.初始化代码void USART_INIT(void){USART_InitTypeDef USART_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_
平时上课的时候,我们都习惯了使用vim来写代码,好像在嵌入式开发中一个vim可以走天下。就跟有些从事单片机开发的工程师一样,安装一个keil软件,就能完成编码、编译、下载、调试。其实在嵌入式开发中使用的工具有很多,真正写代码的时候,也不会有人选择vim,因为它的编码效率实在是低,就跟记事本一样,每个字符都要自己去敲。所以这篇文章就跟大家推荐一些嵌入式开发工程师必备的几个工具,让你在开发中能够事..
学习嵌入式必须掌握一定的方法,才能比较快速有效的学习。这个方法就是框架学习法,如前所述,首先在了解这个基础框架之前我们要有一定的基础,那么这个基础就是单片机和C语言,不需要掌握的有多好,但一定要具备一定的C语言编程能力。像其他有些课程,比如计算机专业课程中的编译原理、数据结构,计算机系统体系结构,这些知识实际上还不太需要,了解一下就可以了。有了C语言编程基础,并且学过单片机,这个时候就可以学习一下
stm32
本系列准备分为3-4篇来讲,因为说的太多会比较乱v4l2视频驱动主要涉及几个知识点:摄像头方面的知识(摄像头厂家提供的芯片手册可以查看)要了解选用的摄像头的特性,包括访问控制方法、各种参数的配置方法、信号输出类型等。Camera解码器、控制器(主控芯片的芯片手册里面有摄像头相关的寄存器设置,比如2410里,里面主要是设置相关控制功能使能,芯...
在科技发达的今天,人们对于生活质量也有了更高层次的追求,那就不得不引入嵌入式这项技术了,嵌入式开发被越来越多的人所熟知。那么,究竟什么是嵌入式呢?嵌入式开发是什么意思呢?接下来,小编慢慢跟你聊一聊嵌入式。...
转眼间已经在CSDN平台断断续续更新了几十篇文章,基本都是在分享技术,很少对个人经验进行总结,一是觉得自己工作年限不够,说不出有价值的东西,二是平时思考都比较碎片化,鲜有时间总结。前段时间偶尔翻到了自己发的第一条博文,这让我开始回顾转行这些年,碰到过很多人和事:有觉得程序员轻松,敲键盘就能拿工资的行外人;有培训两个月,拥有三年工作经验并成功找到工作的程序员;也有为了赶项目进度,让应届新员工接手核心
利用Jflash给芯片编程
1. CMSIS 标准2. HAL 库简介上图是一个标准的 STM32F103 HAL 库的文件组织方式,至于其他芯片的组织方式其实是一模一样的。基于寄存器方式的开发,实质上就是查找手册配置寄存器的过程,通过寄存器完成引脚的配置初始化和对应的操作。使用HAL库可以简化配置寄存器的过程,HAL 库借鉴面向对象的思想,将外设和引脚抽象为具有同样属性和操作的对象,定义数据类型和接口函数来描述片内外设,通
上一章节讲到MDK编译程序后,会告诉你program size,其中有Code、RO-data、 RW-data、 ZI-data的大小的说明。这里的说明的意思是主要是告诉你,此时你编写的工程:FALSH和SRAM的资源的使用状况。我们可以打开map文件查看,此文件一般在OBJ文件夹中找到,不知道怎么查看和看的可以看我的上一篇文章里面的第一个链接。program size的意思就是告诉你消耗...
三种STM32定时器区别:通用定时器功能特点描述STM3 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括:位于低速的APB1总线上(APB1)16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数 为 1~65535 之间的任意数值。4 个独立通
golang json自定义解析1.使用背景假设json格式为:{"op":"+","num1":10,"num2":13}最终需要转换为:{"op":"+",...
主要是stm32f4芯片,然后刚好这几天在调试DMA,今天调好了,就有了这些感想,记录下来,希望能帮到后来的人吧。调试过DMA的同行可能都会对这样一条语句有印象——————DMA_GetCurrentDataCountor();这条语句返回的是dma里的nxt寄存器的值,这个值就是用来记录你设置的用于传输数据的buffer使用过后还剩下多少的一个值。打个比方,这里有个容器,容量是200,现...
嵌入式测试
环境:keil4+stm32项目已有项目名project要添加功能项目名project2实例场景:在project中添加project2中SD卡读写功能(带fatfs文件系统),也可以理解为将project2中已实现的带fatfs的SD卡读写模块移植到新项目project中。步骤:1、启动文件:在project2中的启动文件为startup_stm32f10x_hd....
#include <stdint.h>#include <stdarg.h>extern int vsscanf(const char *, const char *, va_list);extern int vsprintf(const char *, const char *, va_list);int uart_scanf(con...
昨天做了一个简答的小实验,我感觉挺有意思的跟大家分享一下。我用了按键控制mg90s数字舵机,前不久一直研究模拟舵机,数字舵机与模拟舵机的控制方式是一样的pwm时序。数字舵机接线方面:与模拟舵机一样红线接vcc,棕线接GND,黄线接定义的板子引脚。具体的对应角度如图所示:我的板子引脚规定是舵机信号线接PB5,key0引脚是PC5,key1引脚是PA15在这里大家看一下我的程序:main.c#incl
什么是端口复用?STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。简单来说,一个引脚通过不同配置,可以当做很多其他外设的功能引脚来使用(吃饭要拿筷子,洗澡要拿毛巾,一个道理)例子:例如串口1 的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作GPIO,而用做
一、整体思路最近在搞LCD显示汉字、特殊图形的问题。以前玩1602的时候自己做过字模,就是通过1602自带的用户DIY的一个存储点阵区CGROM,把做好的字模转化成点阵的数据存储在CGROM中,最后把汉字显示在1602上面。但是当时是用51做的,而且字模地址是固定存储在1602中的,我们不用去管。在stm32+TFTLCD显示汉字这个实验上面,我的思路还是这个样子,就是做好字模,然后根据地址找到.
关于C语言的goto语句存在很多争议,很多书籍都建议“谨慎使用,或者根本不用”。这里先不做过多的讨论,存在即合理,既然是C语言中的一个知识点,我们还是有必要学会使用。先看一些goto如何用:一、goto的基本语法goto语句有两部分:goto和标签名。标签的命名规则与变量的命名规则一样。如:goto label;要让这条语句正常工作,函数还必须包含另一条标为label的语句,该语句以标...
/* USB Standard Device Descriptor */const uint8_t Joystick_DeviceDescriptor[JOYSTICK_SIZ_DEVICE_DESC] ={0x12,/*bLength */USB_DEVICE_DESCRIPTOR_TYPE, /*b...
先分享一下ST官方基于F1的DSP固件库,自从ST推出F4系列的DSP固件库之后,网上好像很难找到原来F1系列的DSP固件库了。链接:https://pan.baidu.com/s/1S5h2Ti3O1tuLzRxN-SJYtg 密码:yzxv 。也可自行网上搜索“UM0585”。此固件库中我主要用到了FFT库函数,只能使用基4的FFT运算,即64、256、2014这样的点数。而...
1.相关函数osThreadSuspend()osThreadResume()注意函数参数传递的是RunLEDHandle,而不是RunLED,传入RunLED会终结所有任务,包括本任务自身也会自杀。2.使用在非LED任务中挂起、恢复LED任务。如果在LED任务中直接挂起,接下来就没发恢复自己,需要通过别的任务来恢复LED任务。if(a==5){a++;b=osThreadSuspe...
1.先上图2.接线图3.实现效果触碰一下震动传感器,灯亮起,过一会儿灯熄灭4.原理当震动传感器io为低电平打开继电器,高电平关闭继电器,触碰震动传感器时io接收低电平。附上代码#include “stm32f10x.h”#include “relay.h”#include “led.h”#include “shake.h”#include “exti.h”void delay(uint16_t t
你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!” />你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!
1:什么是串口UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器USART : Universal Synchronous Asynchronous Receiver/Transmitter 通用同步/异步收发器串口简单来说就是一种简单的数据传输协议,其数据的传输只需要两根线即可2:数据传输有串口及必定有并口,并口是指把一个数据一次
基于FPGA的超声波避障小车,利用ego1的100HZ时钟,我们可以自己定义不同占空比的PWM来控制电机的转速和舵机的角度,我们可以通过自己写计时器获得超声波来回所需的时间来测量距离,根据距离的远近返回来控制电机的转速以及舵机转动的角度,我们也可以加上openmv识别色块的功能,来模拟小车识别红绿灯控制小车的出发和停止。结合以上描述,我们可以通过FPGA来实现一个颜色控制启动和停止的利用超声波测距
项目介绍硬件平台:无软件平台:Quartusii18.1+Modelsim-Altera功能定义实现直方图均衡化算法详细要求分辨率最大支持640*480,且分辨率可设置;输入和输出位宽为8bits(灰度图);Avalon-ST裸流视频接口;使用说明信号方向描述clkinput同步时钟rst_ninput异步复位,低有效sink_sopinput标志输入视频流一帧开始,高有效,需要s
D1文档中有功能:双屏同显!具体操作见文档:https://d1.docs.aw-ol.com/source/3_getimg/双屏同显测试固件:https://www.aw-ol.com/downloads/resources/38继上述固件之后,因为小项有需求,同显固件无法满足。故有双屏异显第一弹:
芯片:stm32f407ZET6X功能:实现两按键分别控制四个灯和一个蜂鸣器思路:将寄存器设置封装成函数,体会固件库的实现原理踩坑记录:下载程序后发现与PA0连接的按键,为按下,就出现了灯闪,蜂鸣器响,正常逻辑应该是按下按键,PA0口接地,此时才灯亮。原因分析:因为初始化PA0口时没有使能A组的时钟(RCC_AHB1ENR |= (0x01);漏写),所以,上拉拉设置对A组IO口无效,我发现GPI
#include<iocc2530.h>#include<string.h>#define uchar unsigned char#define uint unsigned int#define LED1 P1_0#define LED2 P1_5#define LED3 P1_4#define LED4 P1_3uchar c;uchar temp;uchar Data[
前言Esp8266算是一个傻瓜式的wifi通信模块,前前后后也用过好几次,这次隔了好久没用有些东西都忘了,所在这里记录一下,防止以后用的时候又忘了。硬件电路连接话不多说,先上电路连接图。本次使用的是ESP-01S,也适用于ESP-01。下面是使用手册的连接图:但实际上使用时,一般将此模块的EN和VCC接口都接上5V的电压上,能保证通信的稳定,不过有一个问题就是容易发热,此时可以参考使用手册上给EN
json是什么及json的一些实例json 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器的解析和生成。json的实例是键值对的形式,可以类比于c++的map{"name":"Jack","sex":"man"}{"name":"Jack","age":18,"address":{"country":"china","zip-code":"10000"}} //数字可以不加双引号{"
zonggo//IO方向设置 CRL为0-7 CRH为 8-15 总共四个寄存器位置有效#define DS18B20_IO_IN(){GPIOB->CRH&=0X0FFFFFFF;GPIOB->CRH|=8<<7;}#define DS18B20_IO_OUT() {GPIOB->CRH&=0X0FFFFFFF;GPIOB->CRH|=3...
你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!
通信的目的将一个设备的数据传送到另一个设备,扩展硬件系统比如STM32芯片它里面集成了很多功能模块,比如定时器计数,PWM输出、AD采集等等。这些都是芯片内部的电路,这些电路的配置寄存器,数据寄存器都在芯片里面,操作这些寄存器非常简单,直接读写就行了。但是也有些功能是STM32内部没有的,比如我们想要蓝牙无线遥控的功能,想要陀螺仪加速度计测量姿态的功能。STM32没有这些功能,所以就只能外挂芯片来
本次测试使用了四种数据格式:BMP图像(较多数据冗余,447KB)JPG图像(较少数据冗余,经过一层算法压缩,35KB)TXT文档(万历十五年小说,334KB)DLL程序(PE格式,242KB)压缩算法为LZ4(默认压缩,非HC算法)、LZMA算法(经测试采用综合效果...