
嵌入式裸机ARM驱动开发
文章平均质量分 80
嵌入式裸机ARM驱动开发
。等等
这个作者很懒,什么都没留下…
展开
-
14. UART串口通信
兼容 TIA/EIA-232F标准,速度最高可达 5Mbit/s支持串行 IR 接口,兼容 IrDA,最高可达115.2Kbit/s支持 9 位或者多节点模式1 或 2 位停止位可编程的奇偶检验自动波特率检查,最高支持 115.2 Kbit/s这里只用到最基本的串口功能。原创 2023-11-21 21:57:47 · 358 阅读 · 0 评论 -
13. 高精度延时
GPT 定时器是一个 32 位向上定时器,也就是从0x00000000 开始向上递增计数,GPT 定时器也可以跟一个值进行比较,当计数器值和这个值相等的时候就会发生比较时间,产生比较中断。一个可选时钟源的 32 位向上计数,本次选择 ipg_clk = 66MHz两个输入捕获通道,可以设置触发方式三个输出比较通道,可以设置输出模式可以生成捕获中断、比较中断和溢出中断计数器可以运行在重新启动(restart)或自由运行(free-run) 模式。原创 2023-11-11 17:34:43 · 418 阅读 · 0 评论 -
12. 定时器按键消抖
使用延时函数消抖会浪费 CPU 性能,因为延时函数就是空跑。如果按键是使用中断的方式实现的,就更不能在中断服务函数中使用延时函数,因为中断服务函数最基本的要求就是快进快出。所以可以使用定时器设置好时间,就可以去跑其他的进程,当时间到了,就会触发中断,然后在中断函数中做相应的处理。需要在图中t1 ~ t3 这个时间段消抖。设置按键为下降沿触发,因此会在t1、t2和t3这3个时刻会触发按键中断,每次进入中断处理函数都会重新开启定时器中断。原创 2023-11-11 16:56:39 · 727 阅读 · 0 评论 -
11. EPIC定时器
EPIT定时器是增强的周期中断定时器,主要是完成周期性中断定时。EPIT是一个 32 位定时器,在处理器几乎不用介入的情况下提供精准的定时中断,软件使能后EPIT就会开始运行。时钟源可选的 32 位向下计数器12 位的分频值当计数值和比较值相等的时候产生中断。原创 2023-11-11 16:29:11 · 437 阅读 · 0 评论 -
10. GPIO中断
主要工作:全局中断使能控制、控制每一个中断的使能或关闭、设置每个中断的优先级、设置每个中断的目标处理器列表、设置每个外部中断的触发模式(电平触发或边沿触发)、设置每个中断属于组0还是组1。某个中断 ID 的中断优先级是由寄存器 D_IPRIORITYR 来设置的,一共有512个,如果优先级个数为32,使用寄存器 bit7:4 来设置,也就是实际的优先级要左移 3 位。不同的中断源对应不同的中断处理函数,IMX6U有160个中断源,可以将这些中断处理函数放在一个数组中,对应的下标就是中断号。原创 2023-11-10 21:24:32 · 548 阅读 · 0 评论 -
07. 蜂鸣器
此处为PNP型三极管,BEEP为低的时候三极管才会导通,也就是BEEP=0时,蜂鸣器会叫。BEEP是通过SNVS_TAMPER1这个IO控制的。将前面的bsp、imx6ul、obj和project拷贝过来。makefile文件中只需要添加。原创 2023-10-29 14:32:48 · 154 阅读 · 0 评论 -
06. BSP工程管理实验
bsp用来存放驱动文件,imx6ul用来存放和芯片有关的文件,obj用来存放编译生成的.o 文件,project 用来存放start.s 和 main.c 文件,也就是应用文件。新建 bsp_delay.h 和 bsp_delay.c 两个文件,将这两个文件存放到 bsp/delay 中。新建 bsp_clk.h 和 bsp_clk.c 两个文件,将这两个文件存放到 bsp/clk 中。新建bsp_led.h 和bsp_led.c 文件,放在bsp/led中。此文件放在imx6ul中。原创 2023-10-28 19:31:44 · 129 阅读 · 0 评论 -
09. 主频和时钟配置
左边的 CLOCK_SWITCHER 就是我们上一小节讲解的那 7 路 PLL 和8 路 PFD,右边的 SYSTEM CLOCKS 就是芯片外设,中间的 CLOCK ROOT GENERATOR 给左边和右边进行牵线搭桥。就负责从7路PLL和8路PFD中选择合适的时钟源给外设用,具体操作就是配置相关寄存器以ESAI为例,ESAI的时钟图第一部分是时钟源选择器,ESAI有4个可选时钟源:PLL4、PLL5、PLL_PFD2和PLL3_SW_CLK。原创 2023-10-26 22:59:28 · 324 阅读 · 0 评论 -
05. NXP官方SDK使用实验
【代码】05. NXP官方SDK使用实验。原创 2023-10-17 22:38:18 · 351 阅读 · 0 评论 -
04. 模仿stm32驱动开发
使用结构体将外设的所有寄存器都放到了一起,将这个结构体抽象为外设。头文件imx6u.h。原创 2023-10-17 22:28:57 · 367 阅读 · 0 评论 -
03. C语言编写LED
链接脚本就是编写一系列的命令,每个命令是一个带有参数的关键字或者对一个符号的赋值。我们一般编译出来的代码都包含在text、data、bss和rodata这四个段内。链接脚本主要用于链接,描述文件应该如何被链接在一起形成最终的可执行文件。用来描述输入文件中的段如何被映射到输出文件中,并且控制输出文件中的内存排布。然后将上述的makefile文件的链接脚本由。配置环境start.s。makefile文件。原创 2023-10-17 19:10:29 · 396 阅读 · 0 评论 -
02. IMX启动方式
内部boot ROM为了加快执行速度会打开MMU和cache,下载镜像时 L1 ICache 会打开,验证镜像的时候 L1 DCache、 L2 Cache 和 MMU 都会打开。首先,将CCGR0~CCGR6全部写为0xFFFFFFFF,表示打开所有外设时钟,然后就是DDR初始化参数,设置DDR控制器,也就是初始化DDR。10时,表示芯片会执行内部的boot ROM代码,这段代码会进行硬件初始化,然后从boot设备(就是存放代码的设备,如SD)中将代码拷贝到指定的RAM中,一般是DDR。原创 2023-10-17 18:46:21 · 163 阅读 · 0 评论 -
01. 汇编LED驱动实验
I.MX6UL中的寄存器就是RAM类型的,我们用汇编来配置时许哟啊借助寄存器访问指令,一般先要将要配置的值写入到Rx(x=0~12)寄存器中,然后借助存储器访问指令将Rx中的数据写入到I.MX6UL寄存器中,读取也是一样的。** bit16:** 使能迟滞比较器,当IO作为输入功能的时候有效,如果需要对输入波形进行整形就可以使能该位,0表示禁止,1表示使能。所以,当处理完中断后,应该清除中断标志位。此寄存器是边沿选择寄存器,用来设置边沿中断,会覆盖ICR1和ICR2的设置,如果被设置为1,就是双边沿中断。原创 2023-10-16 21:34:42 · 773 阅读 · 0 评论