ARM裸机开发-LCD

基于IAR工具链的i.MX1 ARM9嵌入式开发环境搭建与实战 嵌入式系统开发中,应用处理器(Application Processor)是执行复杂任务的核心,其开发效率高度依赖于专业的工具链。ARM9架构作为经典的高性能、低功耗处理器内核,广泛应用于便携式智能设备。理解其内存管理单元(MMU)和丰富外设集是开发的基础。在工程实践中,选择高效的集成开发环境(IDE)和编译器对于代码优化、调试和项目管理至关重要。IAR Embedded Workbench以其卓越的代码优化能力和强大的C-SPY调试器,成为开发此类资源受限、追求能效比场景的利器。它能帮助开发者从芯片特性理 阅读详情

目录

一.背景

像素时钟

二.实现

1.初始化

2.配置时钟

 CCM_ANALOG->PLL_VIDEO

 LCDIF->CTRL

CTRL1

TRANSEFR_COUNT

CUR_BUF,NEXT_BUF

VDCTRL0

VDCTRL1

VDCTRL2

VDCTRL3

VDCTRL4


一.背景

        LCD 全称是 Liquid Crystal Display,也就是液晶显示器,是现在最常用到的显示器,手机、
电脑、各种人机交互设备等基本都用到了 LCD,最常见就是手机和电脑显示器了。这里需要注意的是,我们所提及的LCD不包括触摸功能,触摸功能是通过另外的设备实现的,LCD在这里只是输出设备。
        百度百科对于 LCD 的原理解释如下:LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置 TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过 TFT 上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。我们现在要在 I.MX6U-ALPHA 开发板上使用 LCD,所以不需要去研究 LCD 的具体实现原理,我们只需要从使用的角度去关注 LCD 的几个重要点:
分辨率 :提起 LCD 显示器,我们都会听到 720P、1080P、2K 或 4K 这样的字眼,这个就是
LCD 显示器分辨率。LCD 显示器都是由一个一个的像素点组成,像素点就类似一个灯(在 OLED 显示器中,像素点就是一个小灯),这个小灯是 RGB 灯,也就是由 R(红色)、G(绿色)和 B(蓝色)这三种颜色组
成的,而 RGB 就是光的三原色。1080P 的意思就是一个 LCD 屏幕上的像素数量是1920*1080 个,也就是这个屏幕一列 1080 个像素点,一共 1920 列
        LCD 屏幕或者说显示器有很多种接口,比如在显示器上常见的 VGA、HDMI、DP 等等,但是
I.MX6U-Mini开发板不支持这些接口。I.MX6U-Mini 支持RGB接口的LCD,RGBLCD接口的信号线如下表:
R[7:0]、G[7:0]和 B[7:0]这 24 根是数据线,DE、VSYNC、HSYNC 和 PCLK 这四根是控制
信号线。RGB LCD 一般有两种驱动模式:DE 模式和 HV 模式,这两个模式的区别是 DE 模式需要用到DE 信号线,而 HV 模式不需要用到 DE 信号线,在 DE模式下是可以不需要 HSYNC 信号线的,即使不接 HSYNC 信号线 LCD 也可以正常工作

屏幕分辨率:横向像素点个数 * 纵向像素点个数( 800 * 480 )
1920 * 1080
1080P
2K 2560 * 1440
屏幕尺寸: inch " 英寸,左上角到右下角之间的距离 1" = 2.54cm
6.22" 4.3"
1920 * 1080
分辨率相同,尺寸越小,图像显示效果越好
尺寸相同,分辨率越高,图像显示效果越好
像素点颜色:
RGB888 :每个像素点占 3 个字节 8bit 面板 1670 万色
RGB565: 每个像素点占 2 个字节
ARGB :每个像素点占 4 个字节
RGB101010: 10bit 面板 10 亿色 贵 视频剪辑 8 抖 10bit
显存:专门存放图像数据的内存空间
800 * 480 * 4 = 1.5M ( 512MB 0x80000000 - 0xA0000000 )
显存: 0x89000000
PCLK: Pixel Clock 像素时钟信号线。同步像素点发送的时间间隔,上升或下降沿采样 ,取决于手册
HSYNC : Horizontal Sync 行 / 水平同步时钟信号线。同步每一行发送的时间间隔
VSYNC : Vertical Sync 帧 / 垂直同步时钟信号线。同步每一帧图像的时间间隔,从头开始
DE : Data Enable 数据使能信号线
imx6ull的LCD屏刷新率为60HZ
第一行重定向输出运行结果,第二行打开。

像素时钟

我们使用的alpha开发板搭载了一块由正点原子生产的RGB LCD,型号为ATK4384,分辨率为
800*480。其时间参数如下:
按照之前的推导,显示一帧图像所需要的时钟数是:
(VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)= (3 + 32 + 480 + 13) * (48 + 88 + 800 +40) =。显示一帧图像需要515328个时钟数,那么显示60帧就是:515328 * 60 = 30,919,680≈31M,所以像素时钟就是 31MHz。

二.实现

1.初始化

 // 1. 设置lcd引脚复用功能
    IOMUXC_SetPinMux(IOMUXC_LCD_DATA00_LCDIF_DATA00, 0);
    IOMUXC_SetPinMux(IOMUXC_LCD_DATA01_LCDIF_DATA01, 0);
    IOMUXC_SetPinMux(IOMUXC_LCD_DATA02_LCDIF_DATA02, 0);
    ...
    IOMUXC_SetPinMux(IOMUXC_LCD_CLK_LCDIF_CLK, 0);         // pclk
    IOMUXC_SetPinMux(IOMUXC_LCD_HSYNC_LCDIF_HSYNC, 0);     // HSYNC
    IOMUXC_SetPinMux(IOMUXC_LCD_VSYNC_LCDIF_VSYNC, 0);     // VSYNC
    IOMUXC_SetPinMux(IOMUXC_LCD_ENABLE_LCDIF_ENABLE, 0);   // DE
    IOMUXC_SetPinMux(IOMUXC_GPIO1_IO08_GPIO1_IO08, 0);     // blt_pwm

为什么硬件叫 blt_pwm,软件却配成 GPIO?

之所以注释写着 blt_pwm,是因为在硬件原理图上,这个引脚确实连接到了 LCD 的背光控制电路。硬件工程师给它起名叫“背光 PWM”,是因为它最终要控制背光。但是,控制背光有两种常见做法:

  • 硬件 PWM 控制(ALT0 模式):把引脚配置成 PWM1_OUT,让芯片内部的 PWM 模块输出连续方波,通过改变占空比来无级调节背光亮度(比如从 10% 调到 100%)。

  • 软件 GPIO 控制(ALT5 模式,即老师的做法):把引脚配置成普通 GPIO。软件只能输出 0(低电平,背光灭)或 1(高电平,背光亮)。

    • 如果只是需要开灯/关灯,配置成 GPIO 最简单。

    • 如果想调节亮度但不想用硬件 PWM,可以在 Linux 驱动里写个定时器,让 GPIO 不断拉高拉低,模拟 PWM 波形(软件模拟 PWM)。

    // 2. 设置lcd引脚电气属性
    IOMUXC_SetPinConfig(IOMUXC_LCD_DATA00_LCDIF_DATA00, 0xB9);
    IOMUXC_SetPinConfig(IOMUXC_LCD_DATA01_LCDIF_DATA01, 0xB9);
    IOMUXC_SetPinConfig(IOMUXC_LCD_DATA02_LCDIF_DATA02, 0xB9);
    ...
    IOMUXC_SetPinConfig(IOMUXC_LCD_CLK_LCDIF_CLK, 0xB9);
    IOMUXC_SetPinConfig(IOMUXC_LCD_HSYNC_LCDIF_HSYNC, 0xB9);
    IOMUXC_SetPinConfig(IOMUXC_LCD_VSYNC_LCDIF_VSYNC, 0xB9);
    IOMUXC_SetPinConfig(IOMUXC_LCD_ENABLE_LCDIF_ENABLE, 0xB9);
    IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO08_GPIO1_IO08, 0xB9);

一共设置24个数据引脚(R,G,B各8个)

 // 3. 配置pwm引脚
    GPIO_Type_t t = 
    {
        .direction = gpio_output,
        .default_value = 1
    };
    gpio_init(GPIO1, 8, &t);
    gpio_set_value(GPIO1, 8, 1);

2.配置时钟

要配置31MHZ时钟, 先通过倍频让PLL5输出1008MHZ,再通过两个预分频器除以4和8输出为31.5MHZ

可设置NUM为0,DENOM为1,DIV_SELECT为42即可将24MHZ倍频为1008MHZ

预分频器默认为1分频即可。

再通过CSDR2寄存器选通PLL5时钟且配置第一个分频因子为4,通过CBCMR配置第二个分频因子为8。

 CCM_ANALOG->PLL_VIDEO

是 i.MX6UL 芯片内部视频锁相环(Video PLL)的主控制寄存器

// lcd时钟初始化
void lcd_clock_init(void)
{
    // BYPASS
    CCM_ANALOG->PLL_VIDEO |= (1 << 16);
    // Powerdown PLL
    CCM_ANALOG->PLL_VIDEO |= (1 << 12);//写1关闭
    CCM_ANALOG->PLL_VIDEO_NUM = 0;
    CCM_ANALOG->PLL_VIDEO_DENOM = 1;
    // 设置42倍频
    CCM_ANALOG->PLL_VIDEO &= ~(0x7F << 0); 
    CCM_ANALOG->PLL_VIDEO |= (42 << 0);    
    // 设置1分频
    CCM_ANALOG->PLL_VIDEO &= ~(3 << 19);  
    CCM_ANALOG->PLL_VIDEO |= (1 << 20);
    // poweron PLL
    CCM_ANALOG->PLL_VIDEO &= ~(1 << 12);//写0开启
    // enable PLL5 output
    CCM_ANALOG->PLL_VIDEO |= (1 << 13);
    // 轮询等待时钟频率稳定
    while ((CCM_ANALOG->PLL_VIDEO & (1 << 31)) == 0);
    // 切回 PLL5
    CCM_ANALOG->PLL_VIDEO &= ~(1 << 16);

    // 选通门 pll5 + 4分频
    unsigned int t = CCM->CSCDR2;
    t &= ~(7 << 15);
    t |= (1 << 16);  
    t &= ~(7 << 12);
    t |= (3 << 12);
    t &= ~(7 << 9);
    CCM->CSCDR2 = t;

    // 8分频
    CCM->CBCMR |= (7 << 23);
}

lcd寄存器

 LCDIF->CTRL

CTRL1

TRANSEFR_COUNT

CUR_BUF,NEXT_BUF

存放显存地址

VDCTRL0

VDCTRL1

VDCTRL2

VDCTRL3

VDCTRL4

18位,让VSYNC/HSYNC/DOTCLK等工作,

        // lcd参数配置
    lcd_dev.width = 800;
    lcd_dev.height = 480;
    lcd_dev.hspw = 48;
    lcd_dev.hfp = 40;
    lcd_dev.hbp = 88;
    lcd_dev.vspw = 3;
    lcd_dev.vfp = 13;
    lcd_dev.vbp = 32;
    lcd_dev.pix_size = 4;
    lcd_dev.frame_buffer = LCD_FRAMEBUF_ADDR;
    lcd_dev.fore_color = 0x00FF0000;
    lcd_dev.back_color = 0x00FFFFFF;

    // LCD寄存器
    LCDIF->CTRL |= (1 << 19) | (1 << 17) | (3 << 10) | (3 << 8) | (1 << 5);
    LCDIF->CTRL1 = (7 << 16);
    LCDIF->TRANSFER_COUNT = (lcd_dev.height << 16) | (lcd_dev.width << 0);
    LCDIF->CUR_BUF = lcd_dev.frame_buffer;
    LCDIF->NEXT_BUF = lcd_dev.frame_buffer;
    LCDIF->VDCTRL0 |= (1 << 28) | (1 << 24) | (1 << 21) | (1 << 20) | (lcd_dev.vspw << 0);
    LCDIF->VDCTRL1 = (lcd_dev.height + lcd_dev.vfp + lcd_dev.vbp + lcd_dev.vspw);
    LCDIF->VDCTRL2 = (lcd_dev.hspw << 18) | (lcd_dev.width + lcd_dev.hfp + lcd_dev.hbp + lcd_dev.hspw);
    LCDIF->VDCTRL3 = ((lcd_dev.hspw + lcd_dev.hbp) << 16) | ((lcd_dev.vspw + lcd_dev.vbp) << 0);
    LCDIF->VDCTRL4 |= (1 << 18) | (lcd_dev.width << 0);
    LCDIF->CTRL |= (1 << 0);//最后使能

注意,CTRL1位要用=,因为要置0x0111,即7,而16-19位默认为0x1111,所以若使用|=则19位仍为1.

嵌入式PWM风扇控制实战:ARM开发板驱动与多外设协同 PWM(脉冲宽度调制)是嵌入式系统中控制模拟量的核心技术,通过调节数字信号的占空比来等效输出不同电压,广泛应用于电机调速、LED调光等场景。其原理基于定时器产生固定频率的方波,改变高电平时间比例以实现精准控制。在工程实践中,PWM常与GPIO、定时器、中断等模块协同,实现高效的外设驱动。本文以ARM Cortex-M开发板控制轴流风扇为例,详解如何通过按键触发PWM输出,并结合串口通信与LCD显示构建实时监控系统,涵盖硬件连接、软件架构及调试要点,为嵌入式综合应用提供实践参考。 阅读详情

相关推荐

深入理解S3C2440 LCD裸机程序开发

S3C2440是三星电子推出的一款高性能、低功耗的32位RISC微处理器,广泛应用于嵌入式系统领域。该处理器内置ARM920T核心,拥有丰富的外设接口和内置的MMU(Memory Management Unit),支持多种操作系统和复杂的嵌入式应用。裸机程序,或称为裸板程序、无操作系统的程序,通常是指直接在硬件平台上运行,没有操作系统参与管理的程序代码。其直接与硬件进行交互,控制硬件的运作。

weixin_36074800的博客 1004

ARM裸机开发:LCD、串口格式化移植

9.显示一帧图像所需要的时钟数为:(vspw + vbp + line + vfp) * (hspw + hbp + hozval + hfp) = 515328,60帧需要约31M。1.分辨率:(2k因为1920接近2k)1920 * 1080(p)、1280 * 720(p)都是依据像素点说的。5.稳定显示:依靠同步信号(行同步、厂同步)和时钟信号(像素时钟),确保像素数据与扫描位置一一对应。2.控制屏幕内部的像素单元(液晶分子)的透光率,配合背光层(背光模块)实现图像显示。②PCLK:像素时钟线。

2501_91498265的博客 640

OV9650与Mini2440开发板的裸机测试程序

OV9650摄像头传感器是一款广泛应用于嵌入式系统的CMOS图像传感器,它能够提供VGA分辨率的视频流,非常适合于视频监控、实时图像处理等应用。与之配合的处理器和开发板,例如Mini2440和S3C2440,能够提供足够的处理能力以支持摄像头的功能发挥。Mini2440开发板是专为S3C2440处理器设计的一块开发板,用于软件开发和硬件验证。板载资源丰富,包括2MB NOR Flash,64MB SDRAM,以太网接口,音频接口,多种串行接口,以及多个GPIO(通用输入输出)引脚。

weixin_30476025的博客 932

ARM裸机开发:LCD补充、触摸屏触摸显示坐标

1.触摸屏(如电容 / 电阻屏)通过感应触摸位置输出原始模拟信号,经触摸控制器(如 TSC2046)将信号转换为数字坐标(X/Y 轴)3.触摸屏内部寄存器专门存储触摸后的位置坐标,通过触摸产生中断将数据,通过IIC通信读取里面的数据或许写数据。RGB数据传输:同步传输(通过pclk控制传输节奏)、半双工并行(几根线一块传输数据)(二)可通过int和reset配置触摸屏地址(从机),后面将int作用恢复配置为中断。

2501_91498265的博客 382

STM32F103裸机uCGUI实战工程:ILI9325驱动LCD+触摸校准,Keil3一键编译运行

这个资源包提供一套完整可运行的STM32F103裸机图形界面工程,不依赖RTOS或操作系统,直接在Keil MDK-ARM v3(.Uv2项目)环境下编译烧录。核心硬件适配ILI9325液晶控制器,已集成完整的LCD底层驱动——包括初始化流程、读写时序控制、显存映射机制,支持常见分辨率显示;配套TOUCH目录实现电阻式触摸屏校准功能;BSP层封装LED控制、系统时钟配置(system_stm32f10x.c/h)、启动文件(startup_stm32f10x_hd.s)及标准外设库(FWlib);uCGUI

websocket5live的博客 201

LPC2132裸机驱动40pin LCD显示时间实战

LCD显示屏是嵌入式系统中最基础的输出外设,其驱动本质在于GPIO时序控制与字模映射。本文围绕ARM7架构的LPC2132微控制器,解析如何在无RTOS、无GUI库条件下,通过裸机编程实现40pin并行LCD的时间显示功能。核心涵盖LCD电气时序(如E信号脉宽、数据建立/保持时间)、BCD时间格式转换与ASCII字符渲染、hex文件烧录机制及Keil uVision5工程配置要点。特别针对嵌入式初学者常遇的‘keil uvision5怎么烧录hex文件’和‘hex转十进制’在数值显示中的实际应用展开说明,适

weixin_29169505的博客 167

Eclipse开发调试ARM裸机程序(七)LCD

Eclipse开发调试ARM裸机程序(七)LCD        原本想这个LCD应该很难做,但是一个小时搞出来了,2个小时整理下,让自己代码好看一点。这个次不能像I2C一样,用最简的代码来实现了,显示一个图片都要很大,4k的sdram根本不够用,就要用到SDRAM了。启动用的nand,sdram,clock,wathc_dog都是以前的模块,基本上拿来就能用,并没有太难。为了让代码同时具

Android/Linux的专栏 3011

STM32F103扫雷游戏开发:Keil时钟配置与SysTick定时器实战

时钟系统是嵌入式开发的基石,无论是外设通信还是任务调度,都依赖稳定的时钟基准。在STM32这类Cortex-M3微控制器上,HSE、PLL与SYSCLK的配置链直接决定了系统能否按预期工作。理解时钟树原理,掌握Keil MDK-ARM工程中启动文件、宏定义与芯片包的匹配,是规避开发基础问题的关键。时钟的稳定性不仅影响通信波特率,也直接影响SysTick定时器生成的毫秒心跳,进而关系游戏计时、按键扫描等实时逻辑。在资源受限的MCU上实现扫雷这类交互应用,需要合理安排定时器与状态机,并采用局部刷新降低显示开销。

weixin_42531163的博客 186

视频教程-1.14.ARM裸机第十四部分-LCD显示器-驱动/内核开发

1.14.ARM裸机第十四部分-LCD显示器 互联网课程品牌《朱老师物联网大...

weixin_28997311的博客 164

ROS2实战:手把手教你用walking机器人仿真实现医院多楼层自动配送(含实时地图切换)

本文详细介绍了如何利用ROS2和walking机器人仿真平台实现医院多楼层自动配送系统,重点讲解了动态地图切换技术和多楼层导航的实现方法。通过实时加载地图和优化电梯过渡策略,解决了医院复杂环境下的自主配送难题,为医疗物流自动化提供了实用解决方案。

weixin_29090917的博客 364

微信小程序 实现拼图功能

微信小程序 实现碎片拼图

weixin_45689786的博客 2250

【ARM 裸机开发 (IMX6ULL-mini)】RGB-LCD 驱动与时序详解

本文基于 IMX6ULL 裸机开发,讲解 LCD 驱动原理与代码实现。先介绍 LCD 基础概念:分辨率、像素格式、色深、显存,对比 CRT 扫描机制,解析行场同步信号 HSYNC、VSYNC、DE 以及 HBP/HFP/VBP/VFP 时序。以 4.3 寸 800×480 ATK4384 屏幕为例,计算像素时钟,配置 PLL5 得到 31MHz 像素时钟;完成 LCD 引脚初始化、LCDIF 寄存器配置,实现清屏与画点基础函数,并介绍小型图像库移植思路。

2403_89702754的博客 500

利用GBD数据库做未来疾病负担预测

最近看到一篇文献,利用GBD数据库中的数据对疾病负担的发展趋势进行预测。觉得很有趣,就抽空用R语言复盘了一下里面关键的方法。 参考文献: Changing trends in the disease burden of esophageal cancer in China from 1990 to 2017 and its predicted level in 25 years DOI: 10.1002/cam4.3775 1. 相关R包的安装 主要用到的R包有3个,一个一个讲: 1.1 Nordpred

NickyCat的博客 5万+

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-21.6讲 LCD时间参数和像素时钟设置

本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。

小狗爱吃黄桃罐头的博客 461

similarity network fusion for aggregating data types on a genomic scale

基因组规模上的聚合数据类型的相似性网络融合 摘要:         近期的技术已经使收集不同类型的全基因组数据十分划算,结合这些数据去创建一个给定的疾病或生物过程的一个全面视图的计算方法是有必要的。相似网络融合(SNF:similarity network fusion)通过创建每一个可利用的数据类型的样本(如,患者)的网络可以解决这个问题。例如,创建一个给定一群患者疾病的全面视图,SNF计算

augustar学习笔记 7869

服务器centos上安装IC618(virtuoso)教程

只需要按照提供的步骤即可实现IC618安装。有需要详情请联系QQ:563962386

swicthsober的博客 1万+

KEIL下S3C2440裸机开发

玩ARM7一般有keil工程模板,裸机程序开发很方便;ARM9貌似只有ADS环境下的模板,keil下的模板如有望告知。 ARM9主要是移植Linux,在系统上开发,感觉起步较难,先偷懒从裸机入手,虽然两者差别巨大。 S3C2440在keil下裸机开发环境搭建: http://www.cnblogs.com/CodeWorkerLiMing/archive/2012/06/14/254

tiandawangliang的专栏 1360

【异常】OpenClaw 上下文溢出问题(100% context used 309.9k/200k`)排查与解决

摘要:OpenClaw 运行出现"100% context used 309.9k/200k"报错,表示上下文窗口超出200k Token限制。解决方法包括:1) 重启服务或新建会话清空缓存;2) 修改配置文件提升context_window值;3) 长期优化如限制历史对话轮数、分批处理长文本。该问题通常由输入过长或多轮对话累积导致,需控制单次输入量在阈值内。

奶爸的编程之路,也就一周冷个三天 3236

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-21讲 LCD(RGB)液晶屏驱动开发

本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。

小狗爱吃黄桃罐头的博客 607

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

4. Linux kernel RTC子系统goldfish_rtc driver分析。电脑,会需要时间,还比如 我们的手机、平板,都需要时间;驱动基本就是应用层需要什么数据你给什么数据就行,基本必须实现的就是。3.2 Linux kernel RTC 设备描述符讲解。中看到他的具体实现,也可以根据他的寄存器描述直接在。5. 将驱动添加进kernel和测试RTC驱动。系统来说,时间是一个非常重要的功能;之类的函数接口,接下来我们就开始讲解如何写。,所以我们直接移植设备树即可。,他的寄存器很简单,你可以从。

DSMGUOGUO的博客 568

怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关

怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关 1、首先是怎么读取数据 读取的API是:http://api.heclouds.com/devices/datapoints?devIds=629063002 其中devids这个指的是你的设备ID 然后在我们的headers里面添加一些必要参数,就可以调用了 其中api-key的是你产品里面的master-apikey 把我们的参数写好就可以调用了,选择get方式,点击发送 这个value就是我们需要获取到的参数值了,

zyh960的博客 2万+

ARM裸机视频教程(基于S3C6410)-韦东山-专题视频课程

基于QT6410的ARM裸机视频教程,内容涵盖:LED,系统时钟,串口,位置无关码,DDR,NAND, 异常处理,中断处理和LCD。

韦东山嵌入式专栏 1392

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

复习总结最终版:ARM裸机

②r14(lr):链接寄存器:调用子函数时,硬件会自动将下一条指令的地址(返回地址)存入lr。②数据传输(全双工):因为已提前设置好采样边沿,所以主设备和从设备采样边沿时会分别在两条数据线采样。⑦stop信号:主设备数据传输结束时,会在SCL高电平时,使SDA产生一个上升沿。①r13(sp):栈指针寄存器:嵌套函数需要压栈和弹栈,对局部变量和地址(因为两个函数可能有同一变量名,防止操作错误)11.str r1,[r0],#4 //先用再偏移,将值存储到r0原来地址,地址偏移4,r0指向偏移后的地址。

2501_91498265的博客 1092

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-21.7讲 LCDIF控制接口初始化编写

本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。

小狗爱吃黄桃罐头的博客 530

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ARM与裸机开发教程

一、汇编语言是什么? 我们知道,CPU 只负责计算,本身不具备智能。你输入一条指令(instruction),它就运行一次,然后停下来,等待下一条指令。 这些指令都是二进制的,称为操作码(opcode),比如加法指令就是00000011。编译器的作用,就是将高级语言写好的程序,翻译成一条条操作码。 对于人类来说,二进制程序是不可读的,根本看不出来机器干了什么。为了解决可读性的问题,以及偶尔的编辑需求,就诞生了汇编语言。 ...............

生活需要深度 2826

嵌入式学习 day58:ARM汇编——LCD显示

LCDIF 控制器:自动从显存读数据,输出到屏幕显存:一块内存,每个像素 4 字节(ARGB8888)时序参数:VSPW、VFP、VBP、HSPW、HFP、HBP,要和屏幕匹配初始化流程:引脚 → 时钟 → 复位 → 配参数 → 使能 → 填显存显存访问:数组指针pF[i][j]或手动算偏移背光:GPIO1_IO08 控制。

2401_85242990的博客 189
上一篇: ARM裸机开发-SPI
下一篇: ARM裸机开发-PWM
剑指offer.
博客等级 码龄3年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值