keil

少走弯路,教你如何自学单片机!

烂漫一生 提交于 2019-11-27 15:44:39
很多人在学习单片机的过程中,往往会犯急于求成的错误,这样在遇到挫折时就会严重打击自己信心,最后只能半途而废了。为什么会造成这种结果呢?这是因为要想学会单片机,需要掌握的知识太多了,譬如微机原理、C语言、数字电路以及模拟电路等。所以如果你打算自学单片机,那么必然不能急于求成,而是要有一个循序渐进的过程,否则就会越学越难,直至放弃。 学习单片机不能单独学习理论知识或者只注重实践而忽略理论知识。那么理论和实践该如何安排呢?我的建议是如果你还是在校学生,那么你应该注重理论学习辅助实践,如果你已经毕业工作了,那么应该是实践为主,在实践过程中再去理解相关理论知识。 我学习单片机的过程也是走了很多弯路,浪费了很多时间。这些天也是做了总结,现在分享给大家,让各位想自学学习单片机的朋友少走弯路。 1-自学单片机需要准备什么? 如果你有在网上找自学单片机的资料,相信你们一定有找到郭天祥老师的“十天学会单片机”教学视频。郭老师的这个教学视频讲解的非常精彩,我也是通过郭老师的教学视频来入门单片机,所以我们需要下载这个视频来学习,那么我们是否需要购买相应的开发版来学习呢?答案是我们不需要购买,因为对于初学者来说,使用仿真软件即可。使用仿真软件可以灵活搭建所需要的电路,在我们自己搭建电路这个过程会让我们学习到单片机的电路设计思想,以便我们更好理解单片机,况且对于一名单片机工程师,设计单片机外围电路是必备技能

[转]使用Keil下载单独的Hex文件到单片机内

删除回忆录丶 提交于 2019-11-27 15:09:00
前言 初学STM32时,是通过串口1把Hex文件下载进STM32的,需要一个串口模块,而且还要设置BOOT0和BOOT1电平,然后通过FlyMcu软件进行下载,这也是一种不错的方法,这里我要介绍的是使用JLink调试器和Keil MDK-ARM来下载Hex文件,无需源代码,只需要一个调试器。 所需要的工具和软件 Hex文件,如Demo_STM32.hex Keil软件,v4或v5版本,如Keil v5.16a ARM调试器,Jlink或ST-Link,如Jlink v9 STM32开发板,如STM32F103RET6 1.准备一个完整的工程 准备一个完整的工程,注意,这个工程的芯片型号、开发板的芯片型号、Hex文件对应的芯片型号,这三者的芯片型号要保持一致,否则会出现不能正确运行的问题。如都是STM32F103RET6。 2.确定Jlink已经检测到芯片 如图,先选择调试器类型,然后点击 Setting,如果连接上芯片,会在右侧显示芯片的ID号。 3.确定这个工程的Hex文件的输出路径 打开工程配置界面中的,Output选项,可以看出我这个工程输出文件存放的路径是在OBJ目录下,名称是NiceDay 打开OBJ目录可以看到这个工程生成的hex文件名称为NiceDay.hex 4.把要下载的Hex文件放到OBJ目录下 5.把Output界面的NiceDay改为Demo_STM32

Keil 程序调试窗口

六眼飞鱼酱① 提交于 2019-11-26 22:36:12
一、程序调试时的常用窗口 Keil 软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows)、观察 窗口(Watch&Call Statck Windows)、存储器窗口(Memory Window)、反汇编窗口(Dissambly Window)串行窗口(Serial Window)等。进入调试模式后,可以通过菜单 View 下的相应命 令打开或关闭这些窗口。 图 1 是输出窗口、观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。进入调试 程序后,输出窗口自动切换到 Command 页。该页用于输入调试命令和输出调试信息。对于 初学者,可以暂不学习调试命令的使用方法。 图 1 调试窗口(命令窗口、存储器窗口、观察窗口) 1 、存储器窗口 ? 存储器窗口中可以显示系统中各种内存中的值,通过在 Address 后的编缉框内输入“字 母:数字”即可显示相应内存值,其中字母可以是 C、D、I、X,分别代表代码存储空间、 直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部 RAM 空间,数字代表想 要查看的地址。例如输入 D:0 即可观察到地址 0 开始的片内 RAM 单元值、键入 C:0 即 可显示从 0 开始的 ROM 单元中的值,即查看程序的二进制代码。该窗口的显示值可以以各 种形式显示,如十进制、十六进制、字符型等,改变显示方式的方法是点鼠标右键

《STM32杂记》KEIL中printf的使用

别等时光非礼了梦想. 提交于 2019-11-26 22:32:51
STM32使用printf函数给串口打印信息的执行步骤为: 1.重定向printf函数 给uart.c文件中增加如下函数: //重定向c库函数printf到USART1 int fputc ( int ch , FILE * f ) { /* 发送一个字节数据到USART1 */ USART_SendData ( USART1 , ( uint8_t ) ch ) ; /* 等待发送完毕 */ while ( USART_GetFlagStatus ( USART1 , USART_FLAG_TC ) == RESET ) ; return ( ch ) ; } 2.增加头文件stdio # include <stdio.h> 3.勾选Use MircoLIB 如果只做了前两步,而没有勾选Use MicorLIB,编译器虽然不会报错,但是串口不会输出数据。很多人做了重定向函数以后,输出一串字符的第一个字符会丢失,根本原因是因为SR寄存器中的TC标志默认是置1的。 解决办法: 方法一: 既然TC位初始为1导致的问题,那么我们在使用printf函数前把TC置0也可以解决问题, 写多一句USART1->SR&=~(1<<6); 方法二: 直接修改while的等待条件,while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET)

keil5编译c51和ARM 不用更改TOOLS.INI

落爺英雄遲暮 提交于 2019-11-26 17:32:13
需要keil mdk和keil c51 我用的是mdk528和c51v950a 官方下载地址 https://www.keil.com/download/product/ 安装keil mdk(假设被安装在 D:\Software\Keil ) 安装keil c51安装位置和mdk为同一文件夹 D:\Software\Keil) 安装时提示要不要覆盖文件全部选否或者跳过 按照正常程序添加arm和c51的license 添加ARM Pack 官网下载地址 http://www.keil.com/dd2/pack/ 添加STC Pack 官网下载地址 http://www.stcmcu.com/ 新建工程可以看到STC MCU选项 来源: https://blog.csdn.net/weixin_42100490/article/details/98980153

How to place a variable at a given absolute address in memory (with GCC)

时光怂恿深爱的人放手 提交于 2019-11-26 16:42:51
问题 The RealView ARM C Compiler supports placing a variable at a given memory address using the variable attribute at(address) : int var __attribute__((at(0x40001000))); var = 4; // changes the memory located at 0x40001000 Does GCC have a similar variable attribute? 回答1: I don't know, but you can easily create a workaround like this: int *var = (int*)0x40001000; *var = 4; It's not exactly the same thing, but in most situations a perfect substitute. It will work with any compiler, not just GCC. If