图解ARM-Linux的启动全过程:内核自解压阶段——>内核引导阶段——>内核初始化阶段——>BusyBox初始化阶段。
1
EffectiveModernC++英文版及中文翻译.第一章类型推导条款1:理解模板类型推导条款2:理解auto类型推导条款3:理解decltype条款4:知道如何查看类型推导第二章auto关键字条款5:优先使用auto而非显式类型声明条款6:当auto推导出非预期类型时应当使用显式的类型初始化
2023/8/25 17:56:21 5.16MB c++11 c++14 Effect modern
1
目录诸论第1章TMS320C54x的结构原理1.1TMS320系列DSP芯片概述101.1.1TMS320系列DSP的分类及应用101.1.2TMS320C5000DSP平台111.2TMS320C54xDSP131.2.1TMS320C54x的主要特性131.2.2TMS320C54x的组成框图161.3总线结构181.4存储器191.4.1存储器空间分配201.4.2程序存储器231.4.3数据存储器241.5中央处理单元271.5.1算术逻辑运算单元281.5.2累加器A和B291.5.3桶形移位器311.5.4乘法器/加法器单元321.5.5比较、选择和存储单元331.5.6指数编码器341.5.7CPU状态和控制寄存器341.6数据寻址方式391.6.1立即寻址411.6.2绝对寻址411.6.3累加器寻址411.6.4直接寻址421.6.5间接寻址431.6.6存储器映像寄存器寻址461.6.7堆栈寻址471.7程序存储器地址生成方式481.7.1程序计数器491.7.2分支转移491.7.3调用与返回501.7.4条件操作511.7.5重复操作531.7.6复位操作541.7.7中断551.7.8省电方式591.8流水线601.8.1流水线操作601.8.2延迟分支转移621.8.3条件执行641.8.4双寻址存储器与流水线651.8.5单寻址存储器与流水线671.8.6流水线冲突和插入等待周期671.9在片外围电路711.9.1并行I/O口及通用I/O引脚711.9.2定时器721.9.3时钟发生器741.9.4主机接口781.10串行口831.10.1串行口概述831.10.2标准串行口841.11DMA控制器971.11.1DMA控制器的基本特性971.11.2子地址寻址方式971.11.3DMA通道优先级和使能控制寄存器1001.11.4DMA通道现场寄存器1021.11.5DMA编程举例1081.12外部总线1131.12.1外部总线接口1131.12.2外部总线操作的优先级别1141.12.3等待状态发生器1151.12.4分区切换逻辑1171.12.5外部总线接口定时图1181.12.6复位和IDLE3省电工作方式1201.13TMS320C54x引脚信号说明122第2章指令系统2.1指令的表示方法1302.1.1指令系统中的符号和略语1302.1.2指令系统中的记号和运算符1332.2指令系统1352.2.1指令系统概述1352.2.2指令系统分类135第3章汇编语言程序开发工具3.1TMS320C54x软件开发过程1373.2汇编语言程序的编写方法1393.3汇编语言程序的编辑、汇编和链接过程1413.4COFF的一般概念1433.4.1COFF文件中的段1433.4.2汇编器对段的处理1443.4.3链接器对段的处理1463.4.4COFF文件中的符号1483.5汇编1493.5.1运行汇编程序1493.5.2列表文件1513.5.3汇编命令1543.5.4宏定义和宏调用1543.6链接1563.6.1运行链接程序1563.6.2链接器选项1573.6.3链接器命令文件1583.6.4多个文件的链接164第4章Simulator和CCS集成开发工具的使用方法4.1Simulator的使用方法1694.1.1软件仿真器概述1694.1.2仿真命令1714.1.3仿真器初始化命令文件1744.1.4仿真外部中断1764.2什么是CCS1774.3如何安装和设置CCS1784.3.1CCS对计算机系统的配置要求1784.3.2CCS的安装与设置1784.4CCS窗口介绍1804.4.1CCS窗口示例1804.4.2CCS的菜单栏和快捷菜单1804.4.3CCS的常用工具栏1814.5如何建立工程文件1824.5.1工程文件的建立、打开和关闭1834.5.2在工程文件中添加或删除文件1834.5.3编辑源文件1834.5.4工程的构建1844.6如何调试程序1854.6.1加载可执行文件1854.6.2程序的运行和复位1864.6.3断点设置1874.6.4内存、寄存器和变量操作1884.7如何与外部文件交换数据1914.7
2023/8/25 15:41:47 3.6MB DSP结构 原理 TMS320C54X
1
源代码:#include#include#include#include#definePI3.1415926/*定义常量*/#defineUP0x4800/*上移↑键:修改时间*/#defineDOWN0x5000/*下移↓键:修改时间*/#defineESC0x11b/*ESC键:退出系统*/#defineTAB0xf09/*TAB键:移动光标*//*函数声明*/intkeyhandle(int,int);/*键盘按键判断,并调用相关函数处理*/inttimeupchange(int);/*处理上移按键*/inttimedownchange(int);/*处理下移按键*/intdigithour(double);/*将double型的小时数转换成int型*/intdigitmin(double);/*将double型的分钟数转换成int型*/intdigitsec(double);/*将double型的秒钟数转换成int型*/voiddigitclock(int,int,int);/*在指定位置显示时钟或分钟或秒钟数*/voiddrawcursor(int);/*绘制一个光标*/voidclearcursor(int);/*消除前一个光标*/voidclockhandle();/*时钟处理*/doubleh,m,s;/*全局变量:小时,分,秒*/doublex,x1,x2,y,y1,y2;/*全局变量:坐标值*/structtimet[1];/*定义一个time结构类型的数组*/main(){intdriver,mode=0,i,j;driver=DETECT;/*自动检测显示设备*/initgraph(&driver,&mode,"");/*初始化图形系统*/setlinestyle(0,0,3);/*设置当前画线宽度和类型:设置三点宽实线*/setbkcolor(0);/*用调色板设置当前背景颜色*/setcolor(9);/*设置当前画线颜色*/line(82,430,558,430);line(70,62,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56);/*画主体框架的边直线*//*arc(intx,inty,intstangle,intendangle,intradius)*/arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle(0,0,3);arc(82,418,180,279,12);setlinestyle(0,0,3);arc(558,418,270,360,12);/*画主体框架的边角弧线*/setcolor(15);outtextxy(300,53,"CLOCK");/*显示标题*/setcolor(7);rectangle(342,72,560,360);/*画一个矩形,作为时钟的框架*/setwritemode(0);/*规定画线的方式。
mode=0,则表示画线时将所画位置的原来信息覆盖*/setcolor(15);outtextxy(433,75,"CLOCK");/*时钟的标题*/setcolor(7);line(392,310,510,310);line(392,330,510,330);arc(392,320,90,270,10);arc(510,320,270,90,10);/*绘制电子动画时钟下的数字时钟的边框架*//*绘制数字时钟的时分秒的分隔符*/setcolor(5);for(i=431;i<=470;i+=39)for(j=317;j<=324;j+=7){setlinestyle(0,0,3);circle(i,j,1);/*以(i,y)为圆心,1为半径画圆*/}setcolor(15);line(424,315,424,325);/*在运行电子时钟前先画一个光标*//*绘制表示小时的圆点*/for(i=0,m=0,h=0;i<=11;i++,h++){x=100*sin(
2023/8/25 8:11:27 142KB c语言实现电子时钟 课程设计
1
cc2530uart1串口初始化,并且通过串口中断接收,cc2530uart1串口初始化,并且通过串口中断接收
2023/8/21 1:20:41 881B cc2530 uart1接收
1
5-环境初始化与数据清除+用例定制化执行-V8.3-20210120.pdf
2023/8/20 12:49:19 227KB pytest
1
1、了解BootLoader的基本概念和框架结构2、了解BootLoader引导操作系统的过程3、掌握bootloader程序的编译方法4、掌握BootLoader程序的使用方法(1)、BootLoader的阶段1通常主要包括以下步骤:硬件设备初始化;
拷贝BootLoader的程序到RAM空间中;
设置好堆栈;
跳转到阶段2的C入口点。
(2)、BootLoader的阶段2通常主要包括以下步骤:初始化本阶段要使用到的硬件设备;
系统内存映射(memorymap);
将kernel映像和根文件系统映像从Flash读到RAM空间中;
为内核设置启动参数;
调用内核…………………………………………………………
2023/8/20 8:45:09 188KB Bootloader 嵌入式 Linux
1
纯人工翻译中文版本,STM32CubeMX用户手册中文版,STM32CubeMX用户手册中文版UM1718-翻译版.菜鸟到高手,显得有些霸气哈,不过的确如此,官方带给我们一个比较实用的stm32的工具。
这个工具就是STM32CubeMX,昨天玩freeRTOS的时候就提到过。
说到freeRTOS,这里就多说两句。
全局变量,在任务间相互访问的时候也是需要临界保护的,不然可能会出现奇怪的问题。
不过我们可以关掉时间片调度,任务间可以访问全局变量而不用加保护(不等于菜鸟可以随意代码)。
关闭了时间片调度,只有发生vTaskDelay的时候才会上下文切换。
只要代码合理访问全局变量可以不加保护的。
因此代码也不是可以任意书写的,关于freeRTOS的问题,多看看源码,一切都会有答案。
源码较少,这里就不过多介绍。
关闭时间片不是网上说的configUSE_TIME_SLICING这个宏定义,老鸟发现这个宏压根没用哈,嘿嘿。
阅读源码可以找到相关宏配置。
不过不建议关闭,时间片调度也可以让一个任务在执行一定时间后切换到其他就绪任务去执行。
如果有freeRTOS相关问题,可以留言给我。
废话说多了点哈,继续我们的STM32CubeMX。
下面我们来讲讲这个工具的作用,讲完后,可以自己下载一个试试,挺简单不多介绍。
到官网下载STM32CubeMX,并安装。
1:芯片选型打开STM32CubeMX,我们点击newproject,我们就可以进行芯片选型,如果你下载了打开了这个工具,是不是很惊讶,stm32的所有产品型号都在里面,而且左下提供了资源勾选,比如你要以太网支持,勾选以太网选项,所有的支持以太网的stm32芯片才会被显示,旁边还有个max的栏目指示了芯片最多支持该功能的个数。
空白的一般默认只有一个。
下图是我勾选以太网的截图。
上图不仅提供了芯片,还提供了价格,是否在售,封装,存储,频率等一些列信息。
除了cpu资源可以选型外,上面还提供了脚多少,存储大小等非常灵活的选型方式。
我们选择其中一个的单片机后。
右上部分给我们提供了完美的支持。
第一个选项提供了改cpu的特性,我们可以大概的了解选中的cpu资源。
第二个选项提供该cpu框图,截图图片太大,这里就不截图了。
第三个选项提供了cpu文档,这个文档非常多也非常全面,基本不用在网上东找西找了,主要给硬件工程师用。
第四个选项提供了cpu的相关设计资源,软件编程文档,给软件工程师用,非常全面,包括网上很少用到的文档资料,比如系统移植相关的底层资料(堆栈,指令,汇编)。
第五个选项提供了芯片购买途径,这个每个人自己选择吧。
第六个选项开始工程,芯片选好了,就可以开始工程。
2:设定芯片。
芯片选好后,可以开始设定芯片。
这就是软件工程师的好帮手呀。
比如我要以太网功能,勾选上以太网即可,他就会自动分配出芯片对应的以太网接口。
如下图:上面我选了标准的MII接口。
很多人可能就不理解,你勾了个以太网,咋报错了。
老鸟告诉你为啥变红了,stm32有个复杂的功能就是io口复用,勾选mii后分配的io口和spi2以及iis口重合了,所以这个工具非常智能的提示了出来,非常神奇吧。
告诉你他们不能使用了。
还有些变黄了,说明他们可以选择性使用,真是太方便了,省去了查资料慢慢找io的痛苦。
比如我们还要给它个外部时钟。
我们勾选时钟即可,响应的时钟脚就会分配出来。
如果要将某个脚设置成输入输出那就更简单了,鼠标点选对应的io口选择对应功能即可,比如我单击PA6,它的所有功能可以轻松选择:软件使用比较简单,不过多解释,一看就明白,设置完芯片功能后,我们就设定系统各项功能时钟。
选择时钟设置页面(clockconfiguration)时钟轻松设定,如下图,简单明了,不过多解释了:时钟配置完成后,可以切换到configuration选项对功能进一步设定,里面参数都是常用的功能,设置较为简单。
就不多举例了,比如网络功能里面设置mac地址等。
3:生产初始化代码经过上面的图形化设定,我们可以直接生产初始化代码。
省去我们查阅资料慢慢配置的的环节,时间更多的利用在应用层设计。
点击project下面的生成代码选项。
输入工程名(根据你项目需要起名),这里我就随便输入一个名字。
设定好相关参数。
点击ok即可。
顺便说下,这个工具是配带教程的,我这里只是告诉大家有这样个工具可以加速开发,具体设置参考官方教程。
生成后打开文件夹内容如下:上图的inc和src文件夹里面是生成的主要代码,其他几个文件夹里面的东西,大家可以根据自己需要选择。
src文件夹文件如下:打开熟悉的ma
2023/8/19 21:31:32 11.41MB stm32 仿真
1
实现红黑树的基本操作(初始化、插入、删除)
2023/8/19 4:47:46 4.73MB 红黑树
1
0i-FPlus初始化调试.pdf
2023/8/17 13:13:16 890KB 体感技术
1
共 656 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡