keil

东芝半导体最新ARM开发板——TT_M3HQ开箱评测

点点圈 提交于 2019-11-28 13:32:30
前言 最近从面包板社区申请到一块东芝最新ARM Cortex-M3内核的开发板——TT_M3HQ,其实开发板收到好几天了,这几天一直在构思怎么来写这第一篇评测文章,看大家在社区也都发了第一篇评测,我也趁着周末有时间来写一下开箱报告。了解过东芝的光耦和存储设备,但不知道东芝还有MCU产品,更没有用过相关的开发板,这次有幸能申请到一块最新的M3开发板,非常感谢 面包板社区 、 东芝半导体 、 中科创达 的支持,让我们一起来学习一下东芝MCU的开发和使用。 关于TT_M3HQ 这款TT_M3HQ开发板是 东芝半导体 和国内的 中科创达 强强联手开发的产品,基于东芝ARM Cortex-M3内核的TMPM3HQFDFG微控制器,同时上线的还有基于M4内核TMPM4G9F15FG微控制器的 TT_M4G9 开发板,这两款开发板官方售价均是150元人民币。从板载资源来看,售价150元,价格还是很良心的,就一个主控芯片TMPM3HQFDFG,我在淘宝搜索了一下,价格在 70RMB 左右,而且还板载调试器和USB-TTL芯片,对于开发者来说,只需要一根MicroUSB线即可满足供电、下载、调试的需求,还是非常方便的。 关于东芝的MCU产品 TT_M3HQ开发板采用的TMPM3HQFDFG芯片是属于东芝TXZ3系列MCU,TXZ3系列MCU发布于2016年,采用65nm逻辑工艺

Keil编译过程及程序在Flash和SRAM的空间分配

偶尔善良 提交于 2019-11-28 08:17:06
1. keil编译介绍    当使用keil进行单片机的开发时,运行一段程序后,在output输出框会看到如下图的结果。 图1 keil 的output框   其中,Compiler编译器,使用的版本是 V5.06,程序会先经过编译、后链接linking生成可执行的代码,如果要下载单片机的Flash上,还需要转换成二进制(bin)或者十六进制(hex)的文件。 具体过程如下: 图2 keil的编译过程   值得注意的是,经过编译后,并不会给变量赋地址生(.o文件),只有经过链接器链接后变量才有地址,链接的作用可以看做是便于管理。经链接后 代码分为 Code、RO-data、RW-data、 ZI-data 四部分。接下来是老生常谈的问题,每个区都是干嘛的呢? CODE: 代码区,指程序中代码即函数体的大小,注意程序中未使用的函数也会算在CODE中,也即会占用FLASH空间,因此不用的函数最好删除掉,以免占用过多FLASH空间; RO-DATA: RO就是只读的意思,程序中只读的变量(也就是带Const的)和已初始化的字符串等; RW-DATA: 特指已初始化的可读可写全局/静态变量; ZI-DATA: 未初始化的可读可写全局/静态变量,注意初始化为0也算做未初始化,用到的堆空间和栈空间也会被算入这里面;   之前我一直在想的一个问题是我的局部变量存放在哪里,其实是这样的

Keil 5出现Error: L6218E: Undefined symbol解决方法

梦想与她 提交于 2019-11-28 05:27:47
首先列出网上百度到比较好的blog: blog1:https://blog.csdn.net/super_demo/article/details/32131379 总结了代码中可能因为几种初级或者粗心引起的错误。 blog2:https://blog.csdn.net/zhizuwei/article/details/86017618 总结了因为C和C++代码混合调用引起的未定义错误。 但是在排查时,以上两种方法都不行。首先,排除blog1里面出现的几类错误,其次,我发现在另外一个工程,使用同样的代码,同样的调用方式(但是工程使用的文件不一样),编译的时候没有错误。 最终采用一个简单粗暴的方法,删除原来的.c文件,重建一个同名.c文件,把原来文件的所有内容复制过来。 重新编译,问题解决(其实还是不知道怎么就好了)。 来源: https://www.cnblogs.com/xbook-ben/p/11393973.html

KEIL & IAR SWO管脚使用

我怕爱的太早我们不能终老 提交于 2019-11-28 01:40:49
调试中打印管脚可以用SWO管脚代替PB3脚 keil配置如下 1.在新建工程里面加入 #include <stdio.h> #define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n))) #define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n))) #define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n))) #define DEMCR (*((volatile unsigned long *)(0xE000EDFC))) #define TRCENA 0x01000000 struct __FILE { int handle; /* Add whatever you need here */ }; FILE __stdout; FILE __stdin; int fputc(int ch, FILE *f) { if (DEMCR & TRCENA) { while (ITM_Port32(0) == 0); ITM_Port8(0) = ch; } return(ch); } 2.配置软件 其中core频率是根据单片机频率来设置,必须一样 如上设置完后

Why didn't the compiler warn me about an empty if-statement?

醉酒当歌 提交于 2019-11-27 22:59:53
问题 I'm using Keil uVision v4.74 and have enabled the option "All Warnings". I wrote the following intentional code: if(condition matched) { //do something } When I rebuilt my project, I got 0 errors, 0 warnings. However, when I accidentally wrote: if(condition matched); { //do something } I also got 0 errors, 0 warnings. It was next to impossible for me to find out that a small ; following the if condition was the root of the problem. Why didn't the compiler treat it as a warning and inform me?

keil ‘unrecognized option’系列错误

喜夏-厌秋 提交于 2019-11-27 22:51:11
现象:在keil编译的时候,总是unrecognized option '-abdfrvy+glpsu'错误,感觉很无语 解决方法:额,这个问题,在网上找了些资料,试了一些方法没有找出个所以然来。   于是乎,就重装了下keil,然后就没有问题了。 转载于:https://www.cnblogs.com/Hocker/p/5359499.html 来源: https://blog.csdn.net/weixin_30319153/article/details/99790377

单片机的栈

与世无争的帅哥 提交于 2019-11-27 18:43:00
导读:在C语言的世界里,栈的地位非常举足轻重,许多错误都可能和栈设置有关,那么该如何确定栈的大小? 今天分享一点栈知识,帮助你确定栈的大小,参考链接请点击下方的阅读原文。 其实很多编译工具是可以获取函数调用信息的,比如: KEIL 平台 可以使用参数: --callgraph:生成一个静态调用图(html或文本格式),显示堆栈使用情况 --info=stack:列出所有全局符号的堆栈使用情况 以上两个参数分别生成Objects目录下的 xxx.htm文件(事实上这个--callgraph是默认参数,用浏览器打开这个文件即可)和 Listings目录下的xxx.map 文件(keil或者记事本打开)。 xxx.htm xxx.map 事实上这个文件生成也是由默认参数 --map 管理的,不同的是增加 --info=stack 参数后,文件中还会增加如下信息: 它描述了每一个函数调用情况,并且把最大调用链和最大使用栈给你找出来了(这个文件打开有一个小技巧,双击 Target 1,即可打开这个文件,方便快捷)。 事实上,这些信息只能用于参考,而不能作为最终的栈大小,计算实际栈大小远比这个复杂,这个原文进行了深入阐述。 事实上,一般设置栈大小都不会采用如此复杂的计算,而是通过长时间运行来简单确定栈大小(一般 RTOS 都有栈检查功能函数)

基于STM32L4 IoT探索套件开发AliOS Things

五迷三道 提交于 2019-11-27 17:03:52
前言 ST 与阿里巴巴集团旗下的云计算科技公司——阿里云合作,推出基于STM32L4 IoT探索套件快速开发AliOS Things的方案。STM32用户可以在 STM32L4 IoT上运行阿里的物联网操作系统AliOS,无缝连接阿里云。本文以WiFi连接阿里云收发消息为例介绍如何获得AliOS Things开源代码, 如何基于IoT探索套件STM32 B-L475E-IOT01A与STM32常用开发工具IAR来快速编译、烧写、调试MQTT应用。 硬件概述 从 www.st.com 下载物联网套件B-L475E-IOT01A的详细硬件设计介绍( http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/b-l475e-iot01a.html ) 。  这块开发板使用的是ST低功耗MCU系列中的 STM32L475 芯片,拥有1M字节的Flash和128K字节的SRAM。  支持WiFi、蓝牙、SubG,、NFC等多种无线连接方式。 因为它还支持Arduino接口,所以使用者也可以很方便的通过Arduino接口来扩展其他的无线连接模块

Bootloader for Cortex M3

瘦欲@ 提交于 2019-11-27 16:15:36
问题 I am using a LPC 1768 board from mbed, (with cortex M3 cpu) and I am trying to achieve something here, mainly upgrade the user application from the SD Card, I am writing two programs, first a bootloader/nano-kernel, and a user-app (helloworld will do for a start): Bootloader/nano-kernel at 0x00 address runs, it will do some checks and eventually grab the binary file on the SD card Bootloader/nano-kernel will copy this binary at address 0x9000 (that might have to change later on, but this