当前位置:网站首页>玩转NanoPi 2 裸机教程编程-01点亮User LED难点解析
玩转NanoPi 2 裸机教程编程-01点亮User LED难点解析
2022-06-23 08:58:00 【七月流星.】
一、关于winhex工具
在网上找了很多都不能用,来,这个能用。
链接:http://pan.baidu.com/s/1qWy5eu4 密码:y8zf
二、关于USB转TLL/232串口线
我这个是PL2303HXD版本的USB串口芯片。相比PL2303HXA版本好用的多。
CH340芯片的USB串口线也是可以的,淘宝卖的很便宜。
三、关于串口助手
习惯直接用STC的下载工具自带的串口助手。
四、关于VMware虚拟机和Ubuntu
VMware直接从百度软件中心下载就可以
Ubuntu从Ubuntu官网下载
五、关于VMware tools
在你安装完ubuntu系统之后,VMware软件会提示你安装VMware Tools
按照提示去做就好,设计linux下的命令,自行百度。
六、关于ARM-linux-gcc交叉编译工具
可参考网上的教程或者友善之臂wiki
http://wiki.friendlyarm.com/wiki/index.php/NanoPi_2/zh#.E5.AE.89.E8.A3.85.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.99.A8
七、关于NanoPi2原理图
在原理图最后一页,找到User LED
连接的标号是LED1,那么在PDF中搜索LED1
找到LED1连接的是GPIOB12
通过这种方式来找到是GPIOxN
八、分析数据手册,解析源码
源码如下,先用注释解析一遍
#include "gpio.h"//引入gpio.h
/*定义简单的延迟函数*/
void delay(unsigned int time)
{
while(time--);
}
/*主函数*/
void main(void)
{
/*初始化GPIOB*/
GPIOBALTFN0 &= ~(0X3<<24);//清位
GPIOBALTFN0 |= (0X2<<24);//置位,设置GPIO12为GPIO模式
GPIOBOUTENB |= (1<<12);//设置GPIO12为输出模式
//UserLED接的是GPIO12
GPIOBOUT |= (1<<12);//先置GPIOB为高电平
//因为UserLED的阴极接的GPIO12
/*初始化完毕*/
while(1)
{
GPIOBOUT |= (1<<12);//GPIO12置高电平,LED灭
delay(1000000);//1000000只是随便写的一个数字,具体延时多少秒,不清楚
GPIOBOUT &= ~(1<<12);//GPIO12置低电平,LED亮
delay(1000000);
}
}
先来看这两条代码
GPIOBALTFN0 &= ~(0X3<<24);//清位
GPIOBALTFN0 |= (0X2<<24);//置位,设置GPIO12为GPIO模式
打开S5P4418数据手册
目录处定位到15.4.1.8 GPIOxALTFN0
我们要控制的是GPIOB12,那么就找到GPIOx[12]
GPIOxALTFN0是一个32位寄存器,每两位控制一个GPIOx,一共控制16个GPIOx,
因为有32个GPIOx,
所以GPIOxALTFN1是控制另外16个GPIOx的。
下面来找一下到底是给GPIOB12设置成ALT Function0、ALT Function1、ALT Function2还是ALT Function3。
定位到目录的2.3.2 Ball List Table: Sorted by Function在搜索框中搜GPIOB12,即可快速找到是ALT Function2
那么,给GPIOBALTFN0的第24、25位,分别置1、0即可。
GPIOBALTFN0 &= ~(0X3<<24);//清位,0x3的二进制就是11,取反后为00
GPIOBALTFN0 |= (0X2<<24);//置位,设置GPIO12为GPIO模式,0x2的二进制是10
到此解析结束。
根据上述及上一篇微博的方法,各位可以开始尝试自己写程序了。
边栏推荐
- Use newbeecoder UI implements data paging
- Combination sum II of leetcode topic analysis
- 528. Random Pick with Weight
- Object. Defineproperty() and data broker
- 简易学生管理
- Mqtt+flink to subscribe and publish real-time messages
- Typora设置图片上传服务
- 4sum of leetcode topic analysis
- In depth interpretation of poca smart contract platform gear: the road to parallel architecture public chain
- 636. Exclusive Time of Functions
猜你喜欢

Flink错误--Caused by: org.apache.calcite.sql.parser.SqlParseException: Encountered “time“

简易学生管理

"Coach, I want to play basketball" -- AI Learning Series booklet for students who are making systems

通用分页(1)

【学习资源】理解数学和热爱数学

297. Serialize and Deserialize Binary Tree

Flink error --caused by: org apache. calcite. sql. parser. SqlParseException: Encountered “time“

【云原生 | Kubernetes篇】Kubernetes原理与安装(二)

瞄准海外宠物市场,「Grasphand 」做了一款独立于手机的智能追踪产品 | 早期项目

Which is better, semrush or ahrefs? Which is more suitable for GoogleSEO keyword analysis
随机推荐
[advanced Android] kotlin notes
June 22, 2022: golang multiple choice question, what does the following golang code output? A:3; B:1; C:4; D: Compilation failed.
'coach, I want to play basketball!'—— AI Learning Series booklet for system students
@Response
GeoServer adding mongodb data source
16.系统启动流程
MySQL故障案例 | ERROR 1071 (42000): Specified key was too long
636. Exclusive Time of Functions
Implementing an open source app store with swiftui
类型从属名称的使用必须以“typename”为前缀
3. Caller 服务调用 - dapr
Deep analysis and Simulation of vector
如何在 FlowUs、Notion 等笔记软件中使用矩阵分析法建立你的思维脚手架
Vue3表单页面利用keep-alive缓存数据的一种思路
New engine, new capability, new experience, Tencent host security flagship release
65. Valid Number
多线程初学
Jog运动模式
Use of type dependent names must be prefixed with 'typename'
Subsets II of leetcode topic analysis