自制F1C200S demo板(六、裸机寄存器点灯)
按照《嵌入式Linux应用开发 完全手册》,了解寄存器的操作,编译流程,硬件执行流程。
1、按照书上编辑修改LED源代码:其中寄存器地址与IO偏移按照芯片手册和电路实际IO进行修改。我的电路使用PA0、PA1作为按键输入,PA2、PA3作为LED输出。
// File led_on_c.c#define PA_CFG0 (*(volatile unsigned long *)(0x01C20800+(0*0x24+0x00)))
#define PA_DAT (*(volatile unsigned long *)(0x01C20800+(0*0x24+0x10)))#define BIT0 0
#define BIT1 1
#define BIT2 2
#define BIT3 3static void delay(void);int main(void)
{PA_CFG0 &= ~(0x7 << (4 * BIT0));//PA0 inPA_CFG0 &= ~(0x7 << (4 * BIT1));//PA1 inPA_CFG0 &= ~(0x7 << (4 * BIT2));//PA2 clearPA_CFG0 &= ~(0x7 << (4 * BIT3));//PA3 clearPA_CFG0 |= 0x1 << (4 * BIT2);//PA2 outPA_CFG0 |= 0x1 << (4 * BIT3);//PA3 outPA_DAT |= 0x1 << BIT2;//PA2 setPA_DAT |= 0x1 << BIT3;//PA3 setwhile(1){PA_DAT &= ~(0x1 << BIT2);//PA2 resetdelay();PA_DAT |= 0x1 << BIT2;//PA2 setdelay();if((PA_DAT & (0x1 << BIT0)) != 0x0){PA_DAT |= 0x1 << BIT3;//PA3 set }else{PA_DAT &= ~(0x1 << BIT3);//PA3 reset}} }static void delay(void) // about 408ms when CPU_CLK_SRC uses OSC24M
{__asm volatile(" ldr r0, =76480 \n" " loop:cmp r0,#0 \n"" beq exit \n"" sub r0,r0,#1 \n"" b loop \n""exit:nop \n");
}
2、原本按照书上编写了start.s文件,makefile文件,但经过多次尝试后发现书上的不能照抄。在网上查资料,发现全志的芯片需要一个tools工具,能够将代码端放到指定位置,以及各种初始化。从网上下载源码后,发现其中有F1C100.s对应了书上的start.s。但并不能按照书上简单组合,还需要各种辅助文件。文件已上传在我的资源中。
3、编译后,烧写到SD卡,运行效果
这个灯在500ms闪烁。按住PA0,会使PA3点亮。
参考:【荔枝派Nano】F1C100S的boothead和BROM - 哔哩哔哩
自制F1C200S demo板(六、裸机寄存器点灯)相关推荐
- 自制F1C200S demo板(四、TF卡启动)
思来想去,发现使用SIPFLASH也不是百分百完美,也终于明白为何最小demo板要首推TF卡启动了. 主要是现在想学Linux驱动,但使用SPIFLASH就需要用uboot和kernel两个同时打包为 ...
- 自制F1C200S demo板(一、电路)
具备FLASH下载,TF卡座,摄像头,LCD,MIC,UART等 一.原理图:如需PDF源文件可到资源下载. 二.电路:如需PDF源文件可到资源下载. 三.实物
- 【f1c200s/f1c100s】mangopi自制linux开发板驱动适配进度(PCB、代码开源)
[f1c200s/f1c100s]mangopi自制linux开发板驱动适配进度(PCB.代码开源) 目前进度 过程记录博客 目前进度 目前自制的mangopi设备驱动适配已完成部分包含: 基于扫描的 ...
- STM32使用寄存器点灯实验
寄存器点灯实验 操作过程 使能IO口时钟配置寄存器RCC_APB2ENR 初始化IO口模式,配置寄存器GPIOx_CRH/CRL 操作IO口,输出高低电平,配置寄存器GPIOx_ODR或者BSRR/B ...
- 海思Hi3519A初体验(升级DEMO板开发环境,更新CPU主频)
拿到手的3519A demo板已经烧好了uboot,没有内核和文件系统,同时uboot也不是最新的. 所以需要先升级demo版的开发环境,即烧写 uboot.kernel.fs,这部分按照手册操作即可 ...
- CPU中的主要寄存器:有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)
在CPU中至少要有六类寄存器:指令寄存器(IR).程序计数器(PC).地址寄存器(AR).数据寄存器(DR).累加寄存器(AC).程序状态字寄存器(PSW).这些寄存器用来暂存一个计算机字,其数目可以 ...
- 【10天基于STM32F401RET6智能锁项目实战第2天】(分别用库函数和寄存器点灯)
分别用库函数和寄存器点灯 一.用寄存器点灯 二.用库函数点灯 一.用寄存器点灯 硬件分析:首先我们要先去看原理图找到相应的GPIO口 然后再去看用到的寄存器 首先我们先看一下GPIO口是挂载在AHB1 ...
- 【开源分享】自制STC15W408AS开发板
[开源分享]自制STC15W408AS开发板 实物图: 和Arduino UNO板子尺寸差不多 开源平台:立创EDA 立创eda主页链接:https://oshwhub.com/perseveranc ...
- MT9V034六个寄存器的配置
前言 这是我一年前总结的,我也忘了为什么是这个公式了,但在默认模式下能用... 寄存器说明: 摄像头工作在默认模式下,好像只用对以下六个寄存器进行配置寄存器配置解读如下: Window_Width r ...
最新文章
- BDTC 2017丨大数据在金融、交通、医疗、工业领域落地实践与应用
- 用AlphaGo设计材料合成实验
- 福州大学计算机专业排名2018,软科2018年世界一流学科排名发布 福州大学9个学科上榜...
- C++实现教学信息管理系统
- edge robert matlab,哪位熟悉matlab的大神路过瞄一眼哈
- Oracle中计算两个时间的时间差:
- 什么MySQL语句在存储过程体中是合法的
- 【ElasticSearch】Es 源码之 RerouteService 源码解读
- 中国科学院计算机研究生调剂,计算机网络信息中心2019年硕士研究生接收调剂信息公告...
- jtextpane设置不能选中_电脑为什么打不开指定的网站?什么是DNS解析我要如何设置DNS...
- Visual Studio Code 基本操作 - Windows 版
- Internet Explorer 10 的 User-Agent 字符串
- WIN7专业版纯净下载:
- IDA 中怎么查看函数的调用关系
- 一文扫尽检测类评估指标:AP、mAP、ReCall、OKS和IoU
- Version 28 (intended for Android Pie and below) is the last version of the legacy support library, s
- OpenCV——硬币检测与计数的设计实现
- 一本通 P1486 【黑暗城堡】
- ExtJs自学教程(一)
- OpenStack Heat服务介绍