当前位置:网站首页>玩转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
到此解析结束。
根据上述及上一篇微博的方法,各位可以开始尝试自己写程序了。
边栏推荐
- 自定义标签——jsp标签基础
- Implementing an open source app store with swiftui
- 3. Caller 服务调用 - dapr
- [qnx hypervisor 2.2 user manual]5.6.1 silent device during guest shutdown
- Cookie和Session入门
- Le rapport d'analyse de l'industrie chinoise des bases de données a été publié en juin. Le vent intelligent se lève, les colonnes se régénèrent
- Custom tags - JSP tag enhancements
- How postman does interface testing 1: how to import swagger interface documents
- GeoServer adding mongodb data source
- node request模块cookie使用
猜你喜欢
随机推荐
'coach, I want to play basketball!'—— AI Learning Series booklet for system students
“教练,我想打篮球“ —— 给做系统的同学们准备的 AI 学习系列小册
16.系统启动流程
2022-06-22:golang选择题,以下golang代码输出什么?A:3;B:1;C:4;D:编译失败。
How can I handle the "unable to load" exception when easyplayer plays webrtcs?
Geoserver添加mongoDB数据源
173. Binary Search Tree Iterator
Node request module cookie usage
Combination sum II of leetcode topic analysis
Basic process of code scanning login
173. Binary Search Tree Iterator
670. Maximum Swap
Simple student management
Balls and cows of leetcode topic analysis
636. Exclusive Time of Functions
New engine, new capability, new experience, Tencent host security flagship release
General paging (1)
Custom tags - JSP tag enhancements
Map (set) operation in go language
MySQL故障案例 | mysqldump: Couldn’t execute ‘SELECT COLUMN_NAME








