Ubuntu18 下载链接
https://releases.ubuntu.com/bionic/
Ubuntu配置静态IP
更新Ubuntu18的镜像源
以清华大学镜像源举例
网站:https://mirrors.tuna.tsinghua.edu.cn/
第一步点开网站搜索ubuntu然后点击问号
第二步选择自己的Ubuntu版本
第三步在Ubuntu中复制粘贴镜像源
sudo gedit /etc/apt/sources.list
最后更新自己的镜像源
sudo apt-get update
Vscode远程连接Ubuntu18问题
vscode需要使用1.85及以下版本才可以连接上,如果当前版本太高需要回退
vscode链接:https://code.visualstudio.com/updates/v1_85
注意:Vscode会自动更新至最新版本,请关闭版本更新,当然也可以更新glibc/libstdc++,不过不建议更新,会存在一些未知问题,最简单的办法就是回退Vscode的软件版本,并关闭vscode的自动更新
stm32mp157通过网线直连电脑组网说明
如果没有路由器可以使用此方法使用PC直连的方式连接,现象如下
FSMP1A> ping 192.168.1.250
ethernet@5800a000 Waiting for PHY auto negotiation to complete... done
Using ethernet@5800a000 device
host 192.168.1.250 is alive
1、安装tftp服务器和nfs服务器成功
2、windows关闭防火墙
在Ubuntu中的配置
FSMP1A> setenv serverip 192.168.1.250
FSMP1A> setenv netmask 255.255.255.0
FSMP1A> setenv gatewayip 192.168.1.1
FSMP1A> setenv ipaddr 192.168.1.100
FSMP1A> saveenv
Saving Environment to MMC... Writing to redundant MMC(1)... OK
注:设置该模式后会导致自己的Ubuntu处于无法与外界网络连接的状态
NPN:当基极为高电平,集电极和发射极导通 当基极为低电平,集电极和发射极截止
PNP:当基极为高电平,集电极和发射极截止 当基极为低电平,集电极和发射极导通
这也就解释了为什么有些LED灯、蜂鸣器等低电平有效的原因
寻找寄存器
1、根据原理图找到对应的总线挂载的模块,以LED为例
这里LED0受PI0的控制,也就是GPIOI组的控制,拿到STM32MP157的数据手册,可查看GPIOI通过哪根总线挂载连接到MP157芯片的,根据2.5.2章节可以看到,其挂载在AHB4总线上,挂载地址是0X5000A000,其RCC基地址是0X50000000,
2、找到RCC_MP_AHB4ENSETR
1.RCC_MP_AHB4ENSETR寄存器作用
设置对应组控制器使能
2.如何确定RCC_MP_AHB4ENSETR基地址
通过2.5.2章节 1)确定总线名称 2)确定对应组寄存器基地址
3.如何确定RCC_MP_AHB4ENSETR地址
RCC_MP_AHB4ENSETR地址 = 基地址 + 偏移地址 = 0x50000000 + 0xA28 = 0x50000A28
4.如何通过RCC_MP_AHB4ENSETR寄存器,设置GPIOI组控制器使能
RCC_MP_AHB4ENSETR[8] = 1 --------> 0x50000A28地址空间中第4位写1,保证其他位不变
3、GPIO
通过以上分析可知:
1)4个通用寄存器:GPIOx_MODER、GPIOx_OTYPER,、GPIOx_OSPEEDR 、GPIOx_PUPDR
2)2个数据寄存器:GPIOx_IDR 、GPIOx_ODR
通过以上分析可知:
1)GPIOx_MODER寄存器作用:设置选择IO口模式(输入、输出、复用、模拟)
2)GPIOx_OTYPER / GPIOx_OSPEEDR寄存器作用:设置输出类型(推挽开漏) 和 速度
3)GPIOx_PUPDR寄存器作用:设置引脚是否需要上下拉电阻
4)GPIOx_ODR寄存器作用:设置引脚输出高低电平
-----------------以LED1------>PE10引脚为例-----------------
1.GPIOE_MODER寄存器作用
设置GPIO引脚模式
2.如何确定GPIOI_MODER基地址
通过2.5.2章节 1)确定总线名称 2)确定对应组寄存器基地址
3.如何确定GPIOI_MODER地址
GPIOI_MODER地址 = 基地址 + 偏移地址 = 0x5000A000 + 0x00 = 0x5000A000
4.如何通过GPIOI_MODER寄存器,设置PI0引脚为输出模式
GPIOE_MODER[1:0] = 01 --------> 0x5000A000地址空间中第[1:0]位写01,保证其他位不变
1.GPIOI_OTYPER寄存器作用
设置GPIO引脚输出类型
2.如何确定GPIOx_OTYPER基地址
通过2.5.2章节 1)确定总线名称 2)确定对应组寄存器基地址
3.如何确定GPIOx_OTYPER地址
GPIOx_OTYPER地址 = 基地址 + 偏移地址 = 0x5000A000 + 0x04 = 0x5000A004
4.如何通过GPIOx_OTYPER寄存器,设置PI0引脚为推挽输出
GPIOE_OTYPER[0] = 0 --------> 0x5000A004地址空间中第[0]位写0,保证其他位不变
1.GPIOI_OSPEEDR寄存器作用
设置GPIO引脚输出速率
2.如何确定GPIOx_OSPEEDR基地址
通过2.5.2章节 1)确定总线名称 2)确定对应组寄存器基地址
3.如何确定GPIOx_OSPEEDR地址
GPIOx_OSPEEDR地址 = 基地址 + 偏移地址 = 0x50006000 + 0x08 = 0x50006008
4.如何通过GPIOx_OSPEEDR寄存器,设置PI0引脚输出速率
GPIOI_OSPEEDR[1:0] = 00 --------> 0x5000A008地址空间中第[1:0]位写00,保证其他位不变
1.GPIOI_PUPDRR寄存器作用
设置GPIO引脚是否需要上下拉电阻
2.如何确定GPIOx_PUPDR基地址
通过2.5.2章节 1)确定总线名称 2)确定对应组寄存器基地址
3.如何确定GPIOx_OPUPDR地址
GPIOx_PUPDR地址 = 基地址 + 偏移地址 = 0x5000A000 + 0x0C = 0x5000A00C
4.如何通过GPIOx_PUPDR寄存器,设置PI0引脚为禁止上下拉
GPIOE_PUPDR[1:0] = 00 --------> 0x5000600C地址空间中第[1:0]位写00,保证其他位不变
1.GPIOI_ODR寄存器作用
设置GPIO引脚输出高低电平
2.如何确定GPIOx_ODR基地址
通过2.5.2章节 1)确定总线名称 2)确定对应组寄存器基地址
3.如何确定GPIOx_ODR地址
GPIOx_ODR地址 = 基地址 + 偏移地址 = 0x5000A000 + 0x14 = 0x5000A014
4.如何通过GPIOx_ODR寄存器,设置PE10引脚输出高低电平
GPIOE_ODR[0] = 1 输出高电平,LED灯点亮 --------> 0x5000A014地址空间中第[0]位写1,保证其他位不变
注:只需要输出数据,所以只需要配置ODR寄存器即可