• Keil5如何生成bin文件

    方法一: 直接使用Keil自带的fromelf 工具 比如用命令行根据axf,生成bin: "D:\Program Files\Keil\ARM\ARMCC\bin\fromelf" --bin --output ./Objects/Led_Reg.bin  ./Objects/Led_Reg.axf 或者在编译器配置中添加: fromelf --bin --output ./Objects/Led_Reg.bin ./Objects/Led_Reg.axf 如果需要srce文件,方法也是类似: "D:\Program Files\Keil\ARM\ARMCC\bin\fromelf" --bin --output ./Objects/Led_Reg.srec ./Objects/Led_Reg.axf 方法二: 使用专用的工具,很多工具都支持不同格式的转换。 比如Hex2bin,可以将hex转换为bin 使用Hex2bin-2.5软件,只需将需要转换的hex文件,拖动到这个小软件上面就会生产所需的bin文件。 生产的bin文件与hex文件在同一个路径下,注意路径不要有中文。 https://sourceforge.net/projects/hex2bin

    11-25 68浏览
  • 设计一个Linux开发板

    由于公司项目需求,一直在找一款能跑Linux系统,外围接口丰富的,关键是必须要有CAN,UART,RMII等

    11-22 85浏览
  • 嵌入式MCU里也能实现类安卓高级UI开发

    AAGUI介绍 AAGUI是一个不依赖特定硬件、操作系统的跨平台通用型GUI。 链接:https://gitee.com/QQ1159465634/aagui 使用MIT开源许可协议 AAGUI采用C(兼容C89)与C++(兼容C++98)编写,兼容位置无关。面向对象、半声明式、等特性使得AAGUI的应用开发效率、可维护性都十分优秀! 优雅的页面管理机制使得AAGUI也能拥有开发出大型系统级多页面UI应用的能力! UI核心来源于对安卓的精简移植,以及超低的内存占用,终于在嵌入式MCU里也能实现类安卓的高级UI开发! 软件架构 文件夹 是否开源 AAGUI_app 应用层 ✅ AAGUI_core 核心层 ❎ libAAGUI 已编译的核心层静态库 ❇ 移植教程 ⑴ 将AAGUI相关代码、静态库全部加入到项目中。加上头文件路径。自定义一个预处理符号方便标记当前目标平台。 ⑵ AABase.c中实现相关抽象移植接口,如aa_malloc()...。 ⑶ 定义主GUI并配置其显示设备信息,对接框架接口。 详情请参阅 AAGUI文档.chm 及已移植好的项目文件。 更多说明 内存空间推荐:flash >= 256KB,RAM >= 32KB(6K栈+26K堆)。 框架重要优势:完整应用框架、多GUI实例(多屏)、json半声明式高级UI、完整中文输入法、支持Alpha、支持剪辑区。 帧缓冲区格式:原生支持0bit自控、1bit单色、8bit灰度、16、24、32bit彩色,支持动态修改。 部分帧缓冲区:支持PFB部分帧缓存,最低只需1行缓存。比如240x320分辨率,最低只需要240的内存。 复用支持简要:页面(面板)复用、UI布局复用、UI控件复用、自定义高级UI组件。 高级布局简要:帧布局、线性布局、绝对布局、垂直&水平滚动容器、文本、文本编辑、按钮、进度条。 字体支持简要:自由管理字体、支持绘制带边框文字、文本缩放绘制。 底层图形绘制:点、线、矩形、圆、圆角矩形、椭圆矩形、渐变矩形、多边形、圆弧(可实现扇形)。 底层图片绘制:1、8、16、24、32bit位图、qoi格式图片。位图支持缩放、旋转。 更多图片  

    11-22 86浏览
  • 新能源汽车VCU、ECU、MCU、电池BMS图解

    新能源汽车中的各种控制器主要包括:整车控制器(VCU)、发动机控制器(ECU)、电机控制器(MCU)和电池管理系统(BMS)。 新能源汽车的三电技术,包括电池、电驱和电控。电池部分阐述了动力电池系统的构成;电驱部分讲解了传动机构、电机和电机控制器的功能; 一、整车控制器(VCU) 1. 功能 1.1 驱动系统控制 1.2 整车能量管理和优化 1.3 整车通信和网络管理 1.4 故障处理与诊断 1.5 汽车状态显示 2. 工作模式 2.1 自检模式 2.2 启动模式 2.3 起步模式 2.4 行驶模式 2.5 制动模式 2.6 停车模式 2.7 故障模式 2.8 充电模式 整车域控制器(VCU)是整车控制的核心控制器,通过汽车总线或者硬线,实现对电池系统、电驱系统、热管理系统等的管理,具体包括档位、加速踏板、制动踏板的控制,根据实时的动力电池电量,计算出需要输出的扭矩控制,整车的低压、高压的上下电、能量回收等控制。 VCU的内部结构简图如下 二、电子控制单元(ECU) Engine Control Unit即发动机控制单元,特指电喷发动机的电子控制系统。 后来随着电子汽车的迅速发展,ECU的定义变成了Electronic Control Unit,即电子控制单元,泛指汽车上所有电子控制系统。 1. ECU基本组成 ECU和普通的单片机一样,由微控制器(MCU)、存储器(ROM、RAM)、输入/输出接口(I/O)、模数转换器(A/D)以及整形、驱动等大规模集成电路组成。 微控制器(MCU)是汽车电子控制单元ECU的核心,以CPU为核心,是集成在一块芯片上的微型计算机。ECU是包括微控制器和相关外围接器件的电路板的总称,是微控制器在汽车的应用系统。 2. ECU的作用 参数控制 故障自诊断和保护功能 3. ECU的工作原理 4. 常见的ECU的类型 ECU的控制范围已经扩张到巡航控制、灯光控制 、安全气囊控制、悬架控制 、燃油加热控制、排气控制、制动控制、EGR和增压压力控制等。 1. EMS(Engine Mangement System)发动机管理系统 2. TCU(Transmision Control Unit)自动变速箱控制单元 3. BCM(Body Control Module)车身控制模块 4. ESP(Electronic Stability Program)车身电子稳定控制系统,车身电子稳定控制系统 5. BMS(Battery Management System)电池管理系统 6. VCU(Vehicle Control Unit)整车控制器 三、电机控制器(MCU) MCU是新能源汽车特有的核心功率电子单元,通过接受VCU的车辆行驶控制指令,控制电机输出指定的扭矩和转速,驱动车辆行驶。实现把动力电池的直流电能转换为所需的高压交流电、并驱动电机本体输出机械能。 MCU具有电机系统故障诊断保护和存储功能;MCU由外壳及冷却系统、功率电子单元、控制电路、底层软件和控制算法软件组成 四、 电池管理系统(BMS) 通过BMS实现对电芯的管理,以及与整车的通讯及信息交换;BMS能够提高电池的利用率,防止电池出现过充电和过放电,延长电池的使用寿命,监控电池状态 本文来源:汽车电子库

    09-27 714浏览
  • 简析嵌入式设备通信协议特点

    为嵌入式设备而设计的通信协议

    09-24 522浏览
  • 单片机时序图基础知识

    单片机是通过什么样的办法进行取指令,执行指令和其它操作的呢?在这里引入了一个时序的概念。

    09-13 548浏览
  • C语言递归调用

    1.汉诺塔:请输入盘子数,输出盘子移动的操作步骤。 #include void move(char from, char to) { printf("%c to %c\n", from, to); } void hanoi(int n, char a, char b, char c) { if (n == 1) move(a, c); else { hanoi(n - 1, a, c, b); move(a, c); hanoi(n - 1, b, a, c); } } void main() { int n; scanf("%d", &n); hanoi(n, 'A', 'B', 'C'); } 2.爬楼梯:树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数。 #include int stair(int n) { if (n == 1) return 1; if (n == 2) return 2; return stair(n - 1) + stair(n - 2); } void main() { int n; scanf("%d", &n); printf("%d", stair(n)); } 3.爬楼梯:树老师爬楼梯,他可以每次走1级、2级或者3级,输入楼梯的级数,求不同的走法数。 #include int stair(int n) { if (n == 1) return 1; if (n == 2) return 2; if (n == 3) return 4; return stair(n - 1) + stair(n - 2) + stair(n - 3); } void main() { int n; scanf("%d", &n); printf("%d", stair(n)); } 4.斐波那契数列:请输入项数,输出具体数列。 #include int fibonacci(int n) { if (n == 1 || n == 2) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } void main() { int n, i; scanf("%d", &n); for (i = 1; i <= n; i++) printf("%d,", fibonacci(i)); } 5.求阶乘:请输入整数n,求1!+2!+3!+4!+5!+6!+7!+…+n!的和。 #include int factorial(int n) { if (n == 1) return 1; return n * factorial(n - 1); } void main() { int n, i, sum = 0; scanf("%d", &n); for (i = 1; i <= n; i++) sum += factorial(i); printf("sum=%d", sum); } 6.取球问题:在n个球中,任意取m个(不放回),求有多少种不同取法。 #include int ball(int n, int m) { if (n < m) return 0; if (n == m) return 1; if (m == 0) return 1; return ball(n - 1, m - 1) + ball(n - 1, m); } void main() { int n, m; scanf("%d%d", &n, &m); printf("%d", ball(n, m)); } 7.杨辉三角:输入要打印的层数,打印杨辉三角。 #include int triangle(int m, int n) { if (m == 0 || n == 0 || m == n) return 1; return triangle(m - 1, n) + triangle(m - 1, n - 1); } void main() { int n, i, j; scanf("%d", &n); for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { printf("%d ", triangle(i, j)); } printf("\n"); } } 8.求年龄:有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3个人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大? #include int age(int n) { if (n == 1) return 10; return age(n - 1) + 2; } void main() { printf("%d", age(5)); } 9.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第十天早上想再吃时,见只剩下一个桃子了。问最初有多少个桃子。 递归: #include int peach(int n) { if (n == 10) return 1; return (peach(n + 1) + 1) * 2; } void main() { printf("%d", peach(1)); } 循环: #include void main() { int i, s = 1; for (i = 9; i >= 1; i--) { s = (s + 1) * 2; } printf("%d", s); } 10.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。第十天同样是吃了前一天的一半加一个,最后剩下一个桃子。问最初有多少个桃子。 递归: #include int peach(int n) { if (n == 11) return 1; return (peach(n + 1) + 1) * 2; } void main() { printf("%d", peach(1)); } 循环: #include void main() { int i, s = 1; for (i = 10; i >= 1; i--) { s = (s + 1) * 2; } printf("%d", s); } 11.最大公约数:利用递归算法求两个数的最大公约数。 #include /* 最大公约数 */ int gcd(int a, int b) { int t; if (a < b) { t = a; a = b; b = t; } if (b == 0) { return a; } return gcd(b, a % b); } void main() { int a, b; scanf("%d%d", &a, &b); printf("gcd=%d", gcd(a, b)); } 12.逆序输出:输入一个正整数,将该正整数逆序输出。 #include void printDigit(int n) { printf("%d", n % 10); if (n > 10) { printDigit(n / 10); } } void main() { int n; scanf("%d", &n); printDigit(n); } 13.逆序输出:输入一个字符串,将该字符串逆序输出。 #include void printStr(char *str) { if (*str != '\0') printStr(str + 1); if (*str != '\0') printf("%c", *str); } void main() { char str[100]; gets(str); printStr(str); } 文章来源于网络,版权归原作者所有,如有侵权,请联系删除。

    09-13 464浏览
  • 数字滤波器在实际工程中的应用有哪些?

    数字滤波器可以分为两大部分:即经典滤波器和现代滤波器。经典滤波器就是假定输入信号x(n)中的有用成分和希望滤除成分分别位于不同的频带,因而我们通过一个线性系统就可以对噪声进行滤除,如果噪声和信号的频谱相...

    09-12 478浏览
  • HDLC数据链路控制协议的三种操作方式

    HDLC是通用的数据链路控制协议,当开始建立数据链路时,允许选用特定的操作方式。所谓链路操作方式,通俗地讲就是某站点以主站方式操作,还是以从站方式操作,或者是二者兼备。在链路上用于控制目的站称为主站,其...

    09-12 500浏览
  • 钽电解电容器在未来的发展方向是什么?

    继电器有很多具体的类型,比如干簧继电器、电磁继电器、计数继电器等等。为增进大家对继电器的认识,本文将对计数继电器、计数继电器的替代方法予以介绍。如果你对继电器或者对计数继电器具有兴趣,不妨和小编一起...

    09-12 460浏览
正在努力加载更多...
广告