物联网实训_Day01~Day06

Day01        基本知识前提

struct node {

   int data;

   struct node next;   //错误,结构大小不确定

   struct node *next;

}

环境搭建

typedef 起别名

数组 typedef int arr_t [3];

arr_t b[2];  arr_t 相当于 int [3];

嵌入式以应用为中心

---------------------------------------------------------------------------------------------------------------------------------

Day02

ST ARM STM

三星 ARM 开发板+外设

联想 Intel

BIOS 基本输入输出系统

C语言执行效率高

提问:

  1. 和CPU连接的各种bus有什么?

三种:数据总线,地址总线,控制总线

区分冯诺依曼体系和哈佛体系:看取数据和取指令是否用的同一根总线

  1. stm32中有几个总线,分别是谁

AHB,AHB1,AHB2,APB1,APB2

     2.要操作GPIO外设,要通过哪个总线操作?

APB2总线打开时钟

一个管脚最多有四个功能

输入:上拉(默认高电平)、下拉(默认低电平)、浮空(默认不确定)

输出:开漏(只能低不能高)、推挽(高低都行)

复用:

模拟:模拟输入(ADC)

编译原理

源程序  --> 预处理文件 --> 汇编文件 --> 目标文件 --> 可执行文件(ELF)

hello.c   -->  hello.i  ----->  hello.s  --->hello.o  ----->a.out

               预处理        编译               汇编            连接

预处理:

根据预处理指令,过滤掉程序的注释,把相关的头文件包含进来,预处理指令 是给预处理器下发的执行

gcc -E hello.c -o hello.i

编译:

将预处理后的文件编为汇编文件

gcc -S hello.i -o hello.s

汇编:hello.s 汇编成目标文件

gcc -o hello.s -o hello.o

链接:将目标文件和库文件,运行文件链接生成可执行文件

gcc hello.o

---------------------------------------------------------------------------------------------------------------------------------

Day03

extern 关键字 扩充变量或者函数的作用域

输入相当于检测,输出相当于控制

初始化GPIO

  1. 选择推挽输出
  2. 选择C组123
  3. 输出频率50MHz

按键对应的管脚

KEY0 --> PC9

KEY1 --> PC8

KEY2 --> PA0

KEY0,KEY1默认高,KEY2默认低

轮询、中断、DMA

定时器:

volatile 易变

告诉编译器在取变量值的时候每次都去内存中取,不要到缓存中取

普通定时器和特殊定时器(wdg ,RTC)

看门狗除了定时,还能重启复位

到达定时时间自动重启

RTC:提供计时功能 年 月 日 时 分 秒

决定定时时间(超时)有哪些因素:频率,计数值

系统定时器:

不是ST公司提供的,是ARM提供的

系统定时器(system timer | systick)

从频率和计数值分析时间长短

提问:

  1. 有几种时钟源

HSI、HSE、LSI、LSE、PLL倍频(乘法器)。

     2.系统时钟是由谁提供的

HSE:内部时钟源往往不稳定,所以选择HSE

通过时钟树,分析定时器的时钟频率SYSCLK / 8或SYSCLK

     3.查找系统定时器的计数范围:0-2^24-1(16M)

USB hub root hub  <-- USB Bus

        usb2.0/3.0  connect <-- Usb Device

        EHCI/XHCI

        End point <-- 发命令 <-- Mass Storage

---------------------------------------------------------------------------------------------------------------------------------

Day04

位带:bitbandf

*((int *) 0x10000000) = 200;

地址:(volatile int *) 0x10000000

访问:*(volatile int *) 0x10000000

位操作:

一般做法:

*(volatile int *) 0x10000000 &= 0xfcffffff;

*(volatile int *) 0x10000000 |= 0x01000000;

标准做法

*(volatile int *) 0x10000000 &= ~(3<<24);

*(volatile int *) 0x10000000 |= ~(1<<24);

结构体、联合、与枚举

struct Student{

   unsigned int x:1;//冒号后面的数字,代表成员变量管理的位数

   unsigned int y:2;//位域

unsigned int z:3;

};

union Unit{

   char c;

   struct Student s;

}

union Unit u;

u.c  =13;

权威指南p86

内存总容量 4G

片内SRAM 512M

片上外设 512M

#define BITBAND (addr,bitnum)

(addr &0xf0000000) + 0x20000000+

((addr & 0xfffff) << 5 + BITBAND << 2)

#define MEMADDR (addr)

*(violatile int *) (addr)

//将十六进制转化成地址使用

typedef enum{

   OUTPUT;

   INPUT;

   AF;

   AIN;

}

位带多用于低端产品

位域多用于高端产品

---------------------------------------------------------------------------------------------------------------------------------

Day05

2.2内存管理

   进程:程序运行的实例

   每个进程都有自己独立的4G内存空间

   参见内存管理图

三 串口

   有线通信:

   RS232:电气特性

     逻辑0:+3V~+15v

     逻辑1:-3V~-15v

     传输距离 < 10m

   RS485:电气特性

     工业级串口 工控领域用的多

     采用差分信号 传输的时候,用两根线

     TTL电平

     低电平:< 0.8v

     高电平:> 2.4v

以太网   4层

M-BUS 远程抄表系统

PLC  电力线通信

无线通信:

短距离:蓝牙,WiFi,红外,zigbee,Nrf

   长距离:移动蜂窝网络,23456G

低功耗局域网:Lora,NB-Iot(窄带物联网)

3.2串行通信

   串行接口简称串口

   工作模式:单工,半双工,全双工

   单工:确定高位先出还是低位先出,空闲时拉高。

0x9b,串口发送,传送时需同

---------------------------------------------------------------------------------------------------------------------------------

DAY06

一 回忆昨天的内容
    
    串行通信  
    115200
    8N1


    
  串行通信与并行通信的区别
  
  USART 
  同步和异步
  
  时序  
  
  usart1_send_byte 
  
  while (*buf) {
      usart1_send_byte ---》 usart1_send_data
  }
  
  usart1_recv_byte
  
二 中断 
     目标:把之前检测按键功能由轮询的方式改为中断
     
     2.0 中断控制器
         当使用中断时,首先中断控制器
         NVIC 可嵌套的向量中断控制器
         VIC  向量中断控制器
         GIC  通用中断控制器  ----》 高端板子
         
         一般情况下MCU 使用NVIC和VIC

 


         
     2.1 在STM32F102RBT6中的中断
         NVIC和ARM-CORTEX-M3紧密相连
         NVIC会处理两个事情
         1) NVIC会为每一个连接到NVIC上的中断源分配一个中断号
          中断号的顺序一定和中断向量(异常处理函数)保持一致
          
         2) 处理优先级的问题
         本身ARM 提供8bit的寄存器来解决256个优先级
         但是ST公司只用了4bit 用于处理16个优先级
         
         2.2 通过手册了解EXTI中断
         打开《stm32f10x中文参考手册》P91
         8.1.2章节中所指示的是中断和异常向量表
         编号越小的(中断),优先级越高
         
         表36中所指示的内容是不可以修改的
         首先关注EXTI,它表示外部中断,可以配置成19个中断事件源
         16个用来处理外部中断,剩余的3个用来处理其他外部中断
         
         GPIO管脚可以触发中断,但是需要借助EXTI,一共有19个
         
         PA0 PB0 PC0 PD0 ...都可以触发EXTI0
         ...
         PA5 PB15 PC15 PD15 ...都可以触发EXTI15
         
         结论:每一个GPIOx 都可以触发EXTIx
         
         注意: 
             1) NVIC 和EXTI的区别
                 NVIC 控制器
                 EXTI 外部中断源
                 
             2) 编号的问题
                 中断有中断号
                     中断号和异常向量表中的顺序有关
                 外部中断也有外部中断号
                     EXTI的中断号和GPIO的管脚相关
                     
             3) 外部中断 EXTI0 对应的中断编号 0..
                     外部中断 EXTI9~5 对应的中断编号是同一个
                     有些外部中断独占一个中断号
                     有些外部中断共享一个中断号
                     也就是说,异常向量表中的第6个函数是处理外部中断0
                     由于KEY0 对应的PC9 KEY1 对应的是PC8
                     且EXTI9~5对应的中断处理函数是同一个,
                     所以要在中断处理函数中进行判断
                     
         2.2 了解外部中断配置寄存器
             EXTIx[3:0] 配置成不同的值的时候,选择不同的管脚
             它属于AFIO_EXTICR1,所以打开时钟的时候,
             需要将GPIOA,GPIOC,AFIO的时钟打开
             
         2.3 驱动EXTI(外部中断)
             KEY0    PC9     EXTI9
             KEY1    PC8     EXTI8
             KEY2    PA0     EXTI0
             KEY0 和 KEY1 在没有按下的时候,呈现高电平。
             KEY2 逻辑和上述相反。
             
         
         用中断的方式实现USART1接受字符串
         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将物联网行业仿真_v2.4.24.3安装到Linux操作系统,你可以按照以下步骤进行操作: 1. 首先,确保你的Linux系统已经安装好,可以是任何主流的Linux发行版,比如Ubuntu、Debian、CentOS等。确保你有管理员权限或superuser权限。 2. 在物联网行业仿真_v2.4.24.3的官方网站或开发者提供的资源中下载安装程序文件。通常,这个安装程序文件会是一个压缩包(例如.tar.gz或.zip格式)。 3. 解压缩该压缩包。你可以使用命令行工具(比如tar或unzip命令)或者图形界面工具(比如压缩软件)来完成这个过程。 4. 打开终端,进入到解压缩后的文件夹所在的路径。 5. 根据开发者提供的说明文件或文档,查找并执行安装脚本。通常,安装脚本的命令会类似于./install.sh或者./setup.py,但根据具体情况可能会有所不同。 6. 运行安装脚本后,你可能需要配置一些选项或者提供一些信息。根据提示,按照你的需求进行填写和选择。 7. 安装完成后,你可以在系统的应用程序菜单、命令行或者桌面上找到物联网行业仿真_v2.4.24.3的启动图标或命令。 8. 双击启动图标或者运行启动命令,打开物联网行业仿真_v2.4.24.3。 通过以上步骤,你应该能够成功地将物联网行业仿真_v2.4.24.3安装到Linux系统中,并开始使用它进行相关仿真活动。请注意,具体的安装步骤可能会因为软件版本或开发者提供的指南而有所差异,所以在进行安装前最好仔细阅读相关的安装说明文档。 ### 回答2: 将物联网行业仿真_v2.4.24.3安装到Linux系统,以下是步骤: 1. 首先,确保你的Linux系统已经安装好了Java运行环境。如果没有安装,可以在终端中输入以下命令进行安装: ``` sudo apt-get install openjdk-8-jre ``` 2. 在官方网站上下载物联网行业仿真_v2.4.24.3的安装包。下载完成后,将安装包移动到你希望安装的目录下,例如/home/username/。 3. 打开终端,进入该目录,解压缩安装包。使用以下命令: ``` tar -xf 物联网行业仿真_v2.4.24.3.tar.gz ``` 4. 解压缩后,进入解压缩的文件夹,并找到启动脚本文件run.sh。使用以下命令运行启动脚本: ``` cd 物联网行业仿真_v2.4.24.3 ./run.sh ``` 5. 运行启动脚本后,等待片刻,物联网行业仿真_v2.4.24.3将会在浏览器中打开。 6. 在浏览器中,按照用户界面的引导进行进一步的设置和配置。 注意:在安装过程中,可能需要输入一些有关数据库连接等信息。请根据自己的际情况进行填写和配置。 通过以上步骤,你已经成功将物联网行业仿真_v2.4.24.3安装到Linux系统中,并可以在浏览器中使用了。祝您顺利! ### 回答3: 物联网行业仿真_v2.4.24.3可以通过以下步骤安装到Linux系统上。 步骤1:首先,确保你的Linux系统已经安装了适当的依赖,如Java和Tomcat服务器。可以使用apt-get或yum等包管理工具安装这些依赖。 步骤2:下载物联网行业仿真_v2.4.24.3的安装包,可以从官方网站或其他可信的来源获取。 步骤3:解压下载的安装包,在终端中使用以下命令解压缩: tar -zxvf 物联网行业仿真_v2.4.24.3.tar.gz 步骤4:进入解压缩后的目录,使用cd命令进入目录: cd 物联网行业仿真_v2.4.24.3 步骤5:运行安装脚本,根据提示进行配置和安装: ./install.sh 步骤6:等待安装过程完成。安装完成后,可以在Tomcat服务器的webapps目录下找到物联网行业仿真的部署文件。 步骤7:启动Tomcat服务器,通过web浏览器访问物联网行业仿真的URL地址,开始使用。 需要注意的是,安装过程可能因为不同的Linux发行版而有所不同。确保按照相关的安装文档和指南进行操作,并处理任何可能出现的错误或问题。如果遇到任何困难,可以参考物联网行业仿真的官方文档或寻求相关论坛和社区的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值