自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 通信与网络技术笔记(一)

通信与网络技术知识点

2021-12-09 17:13:20 2955

原创 FTP站点的建立,设备间文件互传

一、FTP站点建立在控制面版中,依次打开:程序 -->启用或关闭Windows功能打开后出现如下图所示,勾选上如图所示的选项,点击确定,等待安装。完成以上操作后,打开IIS(管理器),在网站单击右键,点击添加FTP站点。输入站点名称,物理路径为所要分享的文件路径,点击下一步。ip地址为所连网络的IP地址,端口为123,无SSL,点击下一步。选择匿名,权限根据自己的需求进行选择。这样ftp站点就建好了。可以使用FileZilla代开ftp,也可使用文件资源管理器打开。

2021-11-03 23:55:58 741

原创 C语言位操作

C语言位操作一、常用位操作符位与&无符号数有符号数位或|逻辑左移<<算数左移<<位异或^逻辑右移>>算数右移>>位取反~1、位与真值表:&010001013 & 5 = ?​ 0b0011 (3)& 0b0101 (5)= 0b0001 (1)拓展:&(按位与)与&&(逻辑与)的区别:逻

2021-10-19 11:10:27 261

原创 U-Boot简介

U-Boot简介一、什么是U-BootLinux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。uboot是一个裸机程序,比较复杂。uboot就是一个bootloader,作用就是用于启动Linux或其他系统。Uboo最主要的工作就是初始化DDR。因为L

2021-09-28 22:00:38 3659

原创 I.MX6ULL 烧写系统

I.MX6ULL 烧写系统硬件所使用的是正点原子的I.MX6U-ALPHA开发板使用正点原子修改过的 NXP 官方的上位机工具 mfgtool。这种固化系统方式可以使用 PC 机在线直接固化系统。使用 mfgtool 上位机固化系统(OTG方式)以 ALPHA 底板为例,底板拨码开关 BOOT_CFG 设置如下:将拨码数字 2 处拨到 ON,其他的为 OFF。用 USB 连接线连接底板的 USB_OTG 接口与 PC 机(电脑)使用USB_OTG需要将SD卡拔出!!打开正点原子的mgfto

2021-09-28 10:52:48 596

原创 BSP 工程管理实验

BSP 工程管理实验我们必须对工程文件做管理,将不同功能的源码文件放到不同的目录中。另外我们也需要将源码文件中,所有完成同一个功能的代码提取出来放到一个单独的文件中,也就是对程序分功能管理。新建名为“5_ledc_bsp”的文件夹,在里面新建 bsp、imx6ul、obj 和 project 这 4 个文件夹。imx6ul 用来存放跟芯片有关的文件,比如 NXP 官方的 SDK库文件;obj 用来存放编译生成的.o 文件;project 存放 start.S 和 main.c 文件,也就是应用文

2021-09-19 18:20:59 478

原创 I.MX6ULL 官方SDK移植

I.MX6ULL 官方SDK移植NXP 针对 I.MX6ULL 编写了一个 SDK 包,这个 SDK 包就类似于 STM32 的 STD 库或者HAL 库,这个 SDK 包提供了 Windows 和 Linux 两种版本,分别针对主机系统是 Windows 和Linux。将正点原子修改后的 fsl_common.h、fsl_iomuxc.h 和 MCIMX6Y2.h 这三个文件拷贝到工程中。一、程序的编写创建 cc.h 文件cc.h 里面存放一些 SDK 库文件需要使用到的数据类型,在cc

2021-09-18 21:20:35 348

原创 模仿stm32开发I.MX6U

模仿stm32开发I.MX6U硬件所使用的是正点原子的I.MX6U-ALPHA开发板我们在学习 STM32 的时候,可以使用“GPIOB->ODR”这种方式来给GPIOB 的寄存器 ODR 赋值,因为在 STM32 中同属于一个外设的所有寄存器地址基本是相邻的(有些会有保留寄存器)。因此我们可以借助 C 语言里面的结构体成员地址递增的特点来将某个外设的所有寄存器写入到一个结构体里面,然后定义一个结构体指针指向这个外设的寄存器基地址,这样我们就可以通过这个结构体指针来访问这个外设的所有寄存器。同理

2021-09-17 22:06:31 264

原创 C语言版本LED灯实验

C语言版本LED灯实验硬件所使用的是正点原子的I.MX6U-ALPHA开发板一、代码实现工程名字为“ledc”,新建三个文件:start.S、main.c 和 main.h。其中 start.s是汇编文件,main.c 和 main.h 是 C 语言相关文件。1、汇编程序的编写在start.s中写入以下代码:.global _start /* 全局标号 */ /* * 描述: _start 函数,程序从此函数开始执行,此函数主要功能是设置 C 5 * 运行环境。 */ _start:

2021-09-17 16:33:27 1302

原创 汇编点亮LED I.MX6U-ALPHA

汇编点亮LED I.MX6U-ALPHA硬件所使用的是正点原子的I.MX6U-ALPHA开发板创建led.s文件,将以下代码写入:.global _start /* 全局标号 *//* * 描述: _start函数,程序从此函数开始执行此函数完成时钟使能、 * GPIO初始化、最终控制GPIO输出低电平来点亮LED灯。 */_start: /* 例程代码 */ /* 1、使能所有时钟 */ ldr r0, =0X020C4068 /* CCGR0 */ ldr r1, =

2021-09-16 21:42:40 1974

原创 掌控板连网与手机通信

掌控板连网与手机通信将手机和掌控板连接在同一个wifi下,在掌控板上将会显示ip地址,手机访问该IP下的8888端口,就可以访问。页面如下:可以写入数据,也可以读取数据。以下是源码:from mpython import *import networkmy_wifi = wifi()my_wifi.connectWiFi('kfc', '1234567891')from tinywebio import appserver, appclientoled.fill(0)ole

2021-09-09 20:38:43 1166

原创 掌控板触摸按键的使用

掌控板触摸按键的使用当触摸按键P按下时,会在左侧显示%20的进度条,触摸按键按N按下时,会在右侧显示%30的进度条。源代码如下:from mpython import *import timemyUI = UI(oled)rgb[0] = (int(0), int(204), int(204))rgb.write()time.sleep_ms(1)oled.fill(0)oled.DispChar('P', 0, 0, 1)oled.DispChar('N', 118, 0, 1

2021-09-09 16:26:29 480

原创 掌控板OLED显示

掌控板OLED显示OLED显示文本内容需要先将显示清空,然后将想要显示的内容放在里面,最后放入oled显示生效。源代码如下:from mpython import *oled.fill(0)oled.DispChar('Hello, world!', 0, 0, 1)oled.show()OLED显示心形下面是对应的源码:from mpython import *import timeimage_picture = Image()while True: oled

2021-09-07 17:24:53 536

原创 stm32cubemx PWM

stm32cubemx PWM通过pwm实现呼吸灯一、软件配置pwm有俩个模式,一个是模式1和2pwm模式:​ pwm模式1:小于比较值位有效电平​ pwm模式2:大于比较值位有效电平配置led灯的引脚位pwm模式Mode 选择PWM模式1Pulse(占空比值) 先给500Fast Mode PWM脉冲快速模式PWM 极性: 设置为低电平二、代码实现定时器初始化完成之后,要启动定时器,用下面的函数。HAL_TIM_PWM_Start(&htim14,TI

2021-09-04 08:35:04 1365

原创 stm32cubemx 定时器中断

stm32cubemx 定时器中断一、基础知识stm32f4:二、软件配置定时器时钟源:APB2负责AD,I/O,高级TIM,串口1。APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。所支持速度不同:APB2支持高速状态下的工作,APB1支持低速状态下的工作。我所使用的如下:这里配置定时器2,每隔1秒产生一次中断。计数器时钟源选择内部时钟(Internal Clock),ETR2为外部时钟模式2。下面配置定时器的参数。APB1时钟频率为84Mh

2021-09-03 22:18:39 1016 1

原创 stm32cubemx 外部中断

stm32cubemx 外部中断一、软件配置将KEY0(PE4)和KEY1引脚配置为外部中断引脚:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RrqfgrrK-1630307488118)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20210826151134501.png)]然后配置其模式及其上下拉。模式共有六种,如下:这里配置为带下降沿触发检测的外部中断模式,并上拉。配

2021-08-30 15:12:16 1111

原创 stm32cubemx 串口(详细)

stm32cubemx 串口(详细)一、软件配置1、将串口1配置为异步模式,并使能中断。2、USART1配置窗口介绍Mode描述硬件引脚支持外设Asynchronous异步模式TXD、RXDUSART、UARTSynchronous同步模式TXD、RXD、CKUSARTSingle Wire (Half-Duplex)半双工单线模式TXDUSART、UARTMultiprocessor Communication多处理器通讯模式TX

2021-08-25 15:31:47 13581 2

原创 stm32cubemx通过位带操作实现点亮LED与按键输入

stm32cubemx通过位带操作实现点亮led完整的工程已上传到码云:gitee(码云)一、软件配置将led引脚配置位推挽输出,如下:点击generate core 生成代码。二、位操作的实现添加IO地址映射文件,sys.c和sys.h该文件中有对应的IO地址映射,可实现其位操作。在该工程中添加一个led.c和led.h文件,添加sys.h以及main.h文件在led.h中添加如下代码,就可实现对led的位操作。#ifndef __LED_H_#define __LED_H__

2021-08-23 20:01:25 1211

原创 stm32中的RAM、flash及其存储器映射

RAM(Random Access Memory)静态RAM(StaticRAM/SRAM)SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵动态RAM(Dynamic RAM/DRAM)DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多.ROM(Read Only Memory)ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。flash存储器

2021-08-06 15:21:38 1591

翻译 ROS服务端Server的编程实现(九)

话题模型编程实现Server端等待信号,每次接收到Client端的信号,海龟的运动状态就切换一次(运动→停止、停止→运动)代码实现方法:初始化ros节点;创建Server实例 ;循环等待服务请求,进入回调函数;在回调函数中完成服务功能的处理,并反馈应答数据;在工作空间的learning_server下的src里面创建turtle_command_server.cpp文件。打开在里面编写代码,代码如下: //该例程将执行/turtle_command服务,服务数据类型std_srv

2021-06-07 19:54:38 123 1

翻译 ROS客户端的编程实现(八)

话题模型编程实现代码实现方法:初始化ros节点;创建一个Client实例发布服务请求数据等待Server处理之后的应答结果再src下创建learning_service功能包在终端输入:catkin_create_pkg learning_service roscpp rospy std_msgs geometry_msgs turtlesim之后在该文件下的src里,创建turtle_spawn.cpp将如下代码写入:/** * 该例程将请求/spawn服务,服务数据

2021-06-03 18:43:26 122

原创 ROS话题消息的定义与使用(七)

如何定义话题消息1、定义msg文件首先,在learning_topic文件夹下创建msg文件夹。learning_topic工作空间的创建,在前面的教程中有详细过程,不会的可以查看前面的,下面是链接地址。ROS创建工作空间和功能包(四)之后在该文件按夹下创建Person.msg文件。在终端中输入:touch Person.msg打开该文件,进行消息的定义:string nameuint8 sexuint8 ageuint8 unknown = 0uint8 male

2021-06-03 14:34:50 153

原创 ROS订阅者Subscriber的编程实现(六)

编程实现前言: 和上一个教程创建过程一样,这里不进行详细介绍,上一个教程链接如下ROS发布者Publisher的编程实现(五)正文开始代码如何实现:初始化ROS节点;订阅需要的话题;循环等待话题消息,接受到消息后,进入回调函数;在回调函数中完成消息的处理;配置CmakeLists.txt中的编译规则之后打开src/learning_topic下的CMakeList.txt文件在该文件中加入如下俩句:add_executable(pose_subscriber src/po

2021-06-02 10:18:48 171

原创 ROS发布者Publisher的编程实现(五)

1创建功能包在功能包中的src文件夹下,创建velocity_publisher.cpp,编写代码://该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist#include <gemetry_msgs/Twist.h>int main(int argc, char **argv){ //ROS节点初始化 ros::init(argc,argv,"velocity_publisher");

2021-06-01 21:27:27 180

原创 ROS创建工作空间和功能包(四)

一、创建工作空间工作空间(workspace)是一个存放工程开发相关文件的文件夹。一个典型Catkin编译系统下的工作空间结构如图下所示。典型的工作空间中一般包括以下四个目录空间。1)src:代码空间(Source Space),开发过程中最常用的文件夹,用来存储所有ROS功能包的源码文件。2)build:编译空间(Build Space),用来存储工作空间编译过程中产生的缓存信息和中间文件。3)devel:开发空间(Development Space),用来放置编译生成的可执行文件。

2021-05-29 18:11:16 266

原创 ROS架构设计及其基础概念(三)

一、ROS架构设计ROS架构可以将其分为三个层次:OS层、中间层和应用层1.OS层ROS并不是一个传统意义上的操作系统,无法像Windows、Linux一样直接运行在计算机硬件之上,而是需要依托于Linux系统。所以在OS层,我们可以直接使用ROS官方支持度最好的Ubuntu操作系统,也可以使用macOS、Arch、Debian等操作系统。2.中间层Linux是一个通用系统,并没有针对机器人开发提供特殊的中间件,所以ROS在中间层做了大量工作,其中最为重要的就是基于TCPROS/UDPROS的通

2021-05-29 18:10:17 1209 2

原创 ROS命令行工具的使用(二)

前言:ROS常用命令及其功能rosnode显示系统当中所有节点相关信息rqt_graph用来显示系统计算图rostopic话题相关的命令rosservice服务相关命令一、小海龟仿真器实例1、在Ubuntu系统中打开一个终端,输入以下命令运行ROS的节点管理器——ROS Master,这是ROS必须运行的管理器节点。roscore2、然后打开一个新终端,使用rosrun命令启动turtlesim仿真器节点.rosrun turtlesim t

2021-05-28 13:19:43 564

原创 ROS Noetic安装教程 (一)

1、 安装这里是官方教程,可以查看下面的网址。ros官方教程1.1、配置Ubuntu软件仓库配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库。如下:1.2、设置sources.list设置电脑以安装来自packages.ros.org的软件。sudo sh -c 'echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) ma

2021-05-27 18:52:39 2366 1

原创 mqtt.fx软件使用教程(连接阿里云)

根据mqtt标准协议连接云平台,这里以阿里的物联网平台为例。用mqtt.fx进行topic的订阅与发布mqtt.fx下载地址mqtt.fx最新版下载地址还要用到技小新MQTT编程工具,这个是用来自动生成连接阿里云的信息,这些信息用来配置mqtt.fx软件,连入阿里云平台。技小新MQTT编程工具下载链接提取码:ypf5mqtt.fx的使用在使用mqtt.fx连入阿里云前,需要登陆阿里云平台,并登陆。https://www.aliyun.com/1、登录阿里云后,找到物联网平台2、选择华东

2021-05-05 18:17:44 3584 10

原创 快速通俗易懂的理解PID

PID控制理论框图r(t): 最终希望达到的值e(t): 所希望的值与实际值的差(误差值)u(t): 给被控对象的值y(t): 被控对象实际输出的值举个简单的例子,控制智能车的速度。(飞卡比赛基础四轮车)为了方便,这里以纯P控制,假设其值为Kp=2.上电后,智能车摄像头采集回来图像,通过图像处理,我们判断出这是直道,想让其以4000的占空比前进(满占空比10000),既40%的速度。此时,r(t)就可以是4000,由于刚上电,此时轮子没有转起来,既编码器采集到的轮子的速度为0(被控对象

2021-04-24 12:02:16 4030

原创 st-link/v2给stm32最小系统下载代码

1、软件设置按照如上配置好后,就可以将st-link接上stm32.2、stm32与st-link的接线方式![在这里插入图片描述](https://img-blog.csdnimg.cn/20210331170021751.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1Njk5MTk1,size_16,color_FFF

2021-03-31 17:04:26 1755 1

原创 Linux系列(四)高阶命令

1、find功能:在linux文件系统中,用来查找一个文件放在哪里了。举例:find /etc -name “interfaces”总结:(1)什么时候用find?当你知道你要找的文件名,但是你忘记了它被放在哪个目录下,要找到该文件时,用find。(2)怎么用find?find 路径 -name “文件名”2、grep功能:在一个文本文件中,查找某个词。举例:grep -nr “SUN” *总结:(1)什么时候用grep?当你想查找某个符号在哪些地方(有可能是一个文件,也有

2021-02-08 18:04:27 1200 3

原创 Freertos系列(三)任务的挂起和恢复API函数

有时候我们需要暂停某个任务的运行,过一段时间以后在重新运行。这个时候要是使用任务删除和重建的方法的话那么任务中变量保存的值肯定丢了!FreeRTOS 给我们提供了解决这种问题的方法,那就是任务挂起和恢复,当某个任务要停止运行一段时间的话就将这个任务挂起,当要重新运行这个任务的话就恢复这个任务的运行。函数描述vTaskSuspend()挂起一个任务。vTaskResume()恢复一个任务的运行。xTaskResumeFromISR()中断服务函数中恢复一个任务的运行.

2021-02-07 21:41:44 174 1

原创 Linux系列(三)权限及其管理

linux中权限表示&管理普通用户与特权用户 su命令切换用户Windows中有普通用户和特权用户,特权用户是Administrator,普通用户可以有很多个。特权用户是系统的管理员,对系统内所有文件具有操作权限。每个普通用户只能处理自己的文件,不能访问其他用户的文件,更不能随意处理操作系统的文件。Linux中也有普通用户和特权用户的区别。特权用户就是root用户。普通用户权限受到限制,譬如说普通用户不能 cd/root,普通用户不能使用apt-get install 来装软件。可

2021-02-07 11:01:08 134 2

原创 Linux系列(二)vi/vim编辑器的使用

编辑器编辑器就是一款软件,它的主要作用就是用来编辑。譬如编写文件,编写代码。Linux中常用编辑器,自带的最古老的vi。比较好用的vim。注:vi和vim的关系:vim是vi的升级版。vim基础使用使用vi来打开/创建一个文件,vi pathnamevi的两种模式:命令模式:当vi打开时默认为命令模式,要转入输入模式,需要按a或者i键。在命令模式下,此时键盘上输入的所有东西都被vi当作命令来对待。在命令模式下,最好不要乱输入。此时应该输入相应的命令,来让vi做相应的事。输入模式:输入模

2021-02-07 09:56:29 251 1

原创 Linux系列(一)基本的一些命令及其知识点

隐藏文件和非隐藏文件Linux中:Linux中隐藏文件特点是文件名以.开头,跟文件属性无关。 在linux中查看隐藏文件用ls -a命令(普通显示ls)相对路径与绝对路径绝对路径:路径是从绝对位置开始的。譬如Windows中从某一个盘符开始(C:\),linux中从根目录/开始相对路径:指明路径的时候,是从当前所在的位置开始的。/abc/123/def.txt 是linux绝对路径 abc/123/def.txt 是linux的相对路径GUI(图形用户界面)和cmdline(命令行)

2021-02-06 19:39:51 276

原创 Freertos系列(二)任务相关的API函数

任务创建和删除的API函数函数描述xTaskCreate()使用动态的方法创建一个任务。xTaskCreateStatic()使用静态的方法创建一个任务。xTaskCreateRestricted()创建一个使用 MPU 进行限制的任务,相关内存使用动态内存分配。vTaskDelete()删除一个任务。1、函数 xTaskCreate()xTaskCreate( TaskFunction_t pxTaskCode,/*任务函数*/ const

2021-01-26 22:45:37 188

原创 Freertos系列(一)Freertos的基础知识

任务特性任务调度器:其可决定哪个任务先运行,那个任务后运行。在使用 RTOS 的时候一个实时应用可以作为一个独立的任务。每个任务都有自己的运行环境,不依赖于系统中其他的任务或者 RTOS 调度器。任何一个时间点只能有一个任务运行,具体运行哪个任务是由 RTOS 调度器来决定的,RTOS 调度器因此就会重复的开启、关闭每个任务。任务不需要了解 RTOS 调度器的具体行为,RTOS 调度器的职责是确保当一个任务开始执行的时候其上下文环境(寄存器值,堆栈内容等)和任务上一次退出的时候相同。为了做到这一点,每

2021-01-24 17:39:41 475

原创 【stm32】史上最详细的8种IO口模式

====

2021-01-21 16:55:31 9591

原创 [C语言]排序算法系列之桶排序

排序算法系列之桶排序桶排序,实际就是把数组的下标看作桶进行排序,这个比较简单,这里直接上代码,基本上一看就懂!桶排序(这里按5个数据进行排序)#include<stdio.h>int main(){ int a[11]={0},i,j,t; for(i=0;i<5;i++) { scanf("%d",&t);//循环依次输入5个任意的数 a[t]++;//进行计数 } for(i=0;i<11;i++)依次判断编号0~10的桶 { for

2020-08-04 11:00:14 278

PLC modbus s7-200smart主从机代码程序

PLC modbus s7-200smart主从机代码程序,可成功读写。

2024-01-12

keil5 MDK最新版软件

keil5最新版

2021-01-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除