STM32系列微控制器开发工具与应用——keil

发布者:WanderlustGaze最新更新时间:2016-06-23 来源: eefocus关键字:STM32系列  微控制器  keil 手机看文章 扫描二维码
随时随地手机看文章
STM32微处理器基于ARM核,所以很多基于ARM嵌入式开发环境都可用于STM32开发平台。开发工具都可用于STM32开发。选择合适的开发环境可以加快开发进度,节省开发成本。本章将先对STM32常用的开发工具Keil MDK和IAR EWARM进行简单介绍,然后结合STM32_SK仿真评估板和STM32F103C的开发板讲解STM32片上资源使用,最后给出一个基于STM32的数据采集器的应用实例。


5.1 Keil MDK介绍
Keil是德国知名软件公司Keil(现已并入ARM 公司)开发的微控制器软件开发平台,是目前ARM内核单片机开发的主流工具。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(uVision)将这些功能组合在一起。uVision当前最高版本是uVision3,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发ARM应用的工程师,都对它十分喜欢。

5.1.1 开发过程及集成开发环境简介
1. Keil的软件开发周期
使用Keil来开发嵌入式软件,开发周期和其他的平台软件开发周期是差不多的,大致有以下几个步骤:
1. 创建一个工程,选择一块目标芯片,并且做一些必要的工程配置。
2. 编写C或者汇编源文件。
3. 编译应用程序。
4. 修改源程序中的错误。
5. 联机调试。
下面这种结构图完整描述了Keil开发软件的整个过程。

2. uVision3 集成开发环境
uVision3 IDE是一款集编辑,编译和项目管理于一身的基于窗口的软件开发环境。uVision3集成了C语言编译器,宏编译,链接/定位,以及HEX文件产生器。uVision3具有如下特性:
 功能齐全的源代码编辑器,
 用于配置开发工具的设备库,
 用于创建工程和维护工程的项目管理器,
 所有的工具配置都采用对话框进行,
 集成了源码级的仿真调试器,包括高速CPU和外设模拟器,
 用于往Flash ROM下载应用程序的Flash编程工具,
 完备的开发工具帮助文档,设备数据表和用户使用向导。
uVision3具有良好的界面风格,下图是一个典型的调试时的窗口。

 工程区:用于访问文件组和文件,调试是可以查看CPU寄存器。
 输出窗口:显示编译结果,以便快速查找错误的地方,同时还是调试命令输入输出窗口,也可以用于显示查找结果。
 内存窗口:显示指定地址内村里的内容。
 查看和调用栈窗口:用于查看和修改变量的值,并且现实当前函数调用树。
 代码窗口:用于查看和编辑源文件。
 外设对话框:检查微控制的片上外设的状态。

3. ULINK USB-JTAG接口适配器
ULINK USB-JTAG是一个用于连接PC USB口和开发板JTAG口的小硬件适配器。通过ULINK你可以在真实的目标板上创建,下载和测试嵌入式应用。ULINK支持如下操作:
 下载目标程序。
 检查内存和寄存器。
 单步运行程序。
 插入多个断点。
 实时运行程序
 烧写FLASH存储器

5.1.2 工程管理
在项目开发中,并不是仅有一个源程序就行了,还要为这个项目选择CPU(Keil支持数百种CPU,而这些CPU的特性并不完全相同),确定编译、汇编、连接的参数,指定调试的方式,有一些项目还会有多个文件组成等,为管理和使用方便,Keil使用工程(Project)这一概念,将这些参数设置和所需的所有文件都加到一个工程中,只对工程而不是对单一的源程序进行编译(汇编)和连接等操作。下面我们就以一个简单的例子HelloWorld来讲解如何建立工程和配置工程。在这个例子里,我们将实现开发板上的LED1闪烁,本例使用STM32F103C开发板为目标板。

5.1.2.1 新建工程
点击菜单“Project”,选择“New uVision Project”,这是将会出现一个对话框,要求给将要建立的工程起一个名字。
选择你要保存的路径,输入工程文件的名字,这里我们就叫HelloWorld,uVision3工程文件的后缀为“.uv2”,然后点击“Save”。 这时会弹出一个对话框要求你选择目标设备的型号。

你可以根据你使用的处理器来选择,如果您所使用的处理器型号在列表中找不到,也可以找一款与您使用的相兼容的型号来代替。这里我们选择STM32F103C8,如图所示,右边一栏是对这个芯片的基本的说明,然后点击“OK”。

有些芯片会提供启动代码,我们这个时候点击“Yes”,到此一个工程就建立好了。

5.1.2.2 配置工程
工程建立好了之后,还要对工程进行进一步的设置,以满足要求。
首先用鼠标右键(注意用右键)点击左边工程窗口的“Target 1”,会出现一个菜单,选择“Options for Target 'Target 1'”(也可以通过点击工程窗口的Target 1”,然后使用菜单“Project”->“Options for Target 'Target 1'”),即出现工程配置的对话框,如下图所示:

这个对话框很复杂,而且根所选择的芯片有关,这里共有10个页面,绝大多数选择默认配置即可,下面将对一些需要注意的配置简单介绍一下。
1. Output标签页的设置

Select Folder for Objects:选择编译之后的目标文件存储在哪个目录里,默认位置为工程文件的目录里。
Name of Executable:生成的目标文件的名字,缺省是工程的名字。
Create Executable:生成OMF以及HEX文件。OMF文件名同工程文件名但没有带扩展名。
Debug Information:用于Debug版本,生成调试信息,否则的话无法进行单步调试。
Create Batch File:生成用于实现整个编译过程的批处理文件,使用这个文件可以脱离IDE对省程序进行编译。
Create Hex File:这个选项默认情况下未被选中,如果要写片做硬件实验就必须选中该项。这一点是初学者易疏忽的,在此特别提醒注意一定要要选中,否则编译之不生成Hex文件。
Big Endian:编码格式,与CPU相关,如果CPU采用的是Big Endian编码则勾选上。
Browse Information:产生用于在源文件快速定位的信息。
Create Library:生成lib库文件,默认不选。
在我们刚刚新建的HelloWorld工程中,更改了三个地方,在工程目录下新建了一个Output目录保存目标文件,以避免和源文件混在一起。另外选中了Create Hex File和Browse Information,如上图所示。
2. C/C++标签页的设置

Include Paths:指定头文件的查找路径,可以添加多个。
这里我们所有的选择保持默认选择就可以了。
3. Debug标签页的设置

左边是对应uVision3的模拟环境,右边是针对仿真器,这里选择右边的ULINK Cortex Debugger仿真器为例进行说明。
如果已经将ULINK仿真器连接到你的电脑,点击“Settings”你将进入ARM Target Driver Setup 界面。

ULINK - JTAG/SWD Adapter:
Serial No:列出了当前连接到主机的所有ULINK适配器的串号,你可以通过列表选择要使用的ULINK适配器。
ULINK Version,Device Family以及Firmware Version分别列出了当前选择的ULINK适配器的版本,设备家族和固件版本。
SWJ,Port:根据和开发板接口的类型选择端口,有JTAG和SW两种,勾选SWJ表示支持两种方式。
Max Clock:指定和开发板的最高通信时钟。
JTAG Device Chain:显示当前通过适配器连接上的开发板。
Automatic Detection:自动监测,选择系统将自动检测连接上的开发板,建议使用。
Manual Configuration:手动配置,通过手动设置ID CODE,Device Name和IR len等属性来查找设备。
Debug:
Cache Options:
 Cache Code:通知调试器已经下载的程序代码不会改变,选中的话uVision将不会从目标系统读取程序代码。
 Cache Memory:决定调试程序期间程序停止运行的时候,是否更新存储器显示。
Download Options:
 Verify Code Download:比较目标存储器和调试器上的应用程序的内容。
 Download to Flash:将代码下载到所有的存储器区域,如果不选中,调试器不会把代码下载到Flash Download Setup中制定的存储器地址范围。
Misc Options:
 Use Reset at Startup:选中的时候,调试器在开始调试的时候会发起一次CPU复位。 
Load Application at Startup:将Output标签中指定的可执行文件导入到调试器的起始地址。
Run to Main:开始调试时执行到Main函数入口暂停执行。
Initialization File:指定一个包含一组调试命令的文件,这组命令是调试器开始工作或者调试函数在调试期间要使用的。
Restore Debug Session Settings:使用上一次调试过程对Breakpoints,Watchpoints,Memory Display和Toolbox(如果这些项被选中的话)。
Driver DLL – Parameter:由Device Database设置的目标驱动DLL,不要修改。
Dialog DLL – Parameter:由Device Database设置的对话框DLL,不要修改。
这里我们修改了两个地方,选中了Use ULINK和Run to Main,对ULINK的设置进行了一些调整,具体的设置图5.11所示。
4. Utilities标签页的设置

Configure Flash Menu Command
 Use Target Driver for Flash Programming:列表选择和调试接口一致的驱动。Init File的设置也和前面调试设置一致。点击Settings将进入Flash Download Setup界面。

Download Function:定义了Flash烧写的时候进行的操作。
 Erase Full Chip:前面三项要选一,烧写程序之前擦除整个Flash存储器。
 Erase Sectors:烧写程序之前擦除程序要使用的扇区。
 Do not Erase:不进行擦除操作
 Program:使用当前uVision工程的程序烧写ROM。
 Verify:验证Flash ROM的内容和当前工程中的程序一致。
 Reset and Run:在烧写和验证完成之后复位开发板并且运行程序。
RAM for Algorithm:指定用于烧写程序的RAM区域,通常是微控制器上的一段片上空间。
 Start:起始地址。
 Size:大小。
可以通过点击Add添加,点击Add你将看到如下的选择列表,可以根据你选用的芯片选择合适的,也可以自己手动添加。

 Use External Tool for Flash Programming:使用第三方的工具进行Flash下载。
 Command:要使用的Flash烧写工具的命令文件(通常是一个.exe文件)。
 Arguments:传递给Flash烧写工具的参数。
 Run Independent:当选中的时候,uVision不等待Flash烧写完成。不选中的时候uVision要等待Flash烧写完成并且在输出窗口显示烧写结果。
在HelloWorld里面修改了Flash Download Setup,具体的设置如上图所示。到此工程设置就结束了。

5.1.2.3 打开工程
通过菜单“Project”->“Open Project”来打开一个现有工程,这时将弹出一个打开文件对话框让我们选择要打开的工程文件。
选择你要打开的工程的路径,然后点击“Open”打开工程。我们还可以和打开其他文件一样,找到一个后缀为“uv2”的uVision3工程文件,直接双击,Windows会自动调用uVision3打开这个文件,前提是你电脑已经安装了uVision3并且和“uv2”文件建立了关联。

5.1.3 编写源程序
选择菜单“File”->“New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口可以输入程序代码。
需要说明的是,源文件就是一般的文本文件,不一定使用Keil软件编写,可以使用任意文本编辑器编写,而且Keil的编辑器对汉字的支持不好,建议使用UltraEdit之类的编辑软件进行源程序的输入。
每一个程序至少有一个原型为int main(void)的主函数,这是程序的入口地址,程序将从这里开始运行。此外,我们还需要对开发板做一些时钟和中断方面的初始化工作,这些工作将在函数RCC_Configuration和NVIC_Configuration中完成。源文件的代码清单如下所示。
#include "stm32f10x_lib.h"
GPIO_InitTypeDef GPIO_InitStructure;
void Delay (vu32 nCount);
/******************************************************************************* Function Name : main
* Description : 主程序
* Input : None
* Output : None
* Return : None
******************************************************************************/
int main (void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init (GPIOB, &GPIO_InitStructure); 
while (1)
{
GPIO_WriteBit (GPIOB, GPIO_Pin_9,
(BitAction)(1-GPIO_ReadOutputDataBit (GPIOB, GPIO_Pin_9)));
Delay (1000000);
}
}
void Delay (vu32 nCount)
{
for (; nCount != 0; nCount--);
}
代码编辑完成之后,我们可以保存源文件,选择菜单“File”->“Save”或者点击工具栏的保存文件按钮,可以用来保存源文件。
这时会出现一个保存文件的文件对话框,选择你要保存的路径,输入文件名HelloWorld.c。注意一定要输入扩展名,如果是c程序文件扩展名为.c,如果是汇编文件扩展名为.s,习惯.asm的也可以存储为.asm。注解说明文件可以保存为.txt的扩展名。
源文件编辑完成之后我们还需要将源文件加入到工程中,工程建好之后,在工程窗口的文件页中,将会出现“Target 1”,前面有个“+”号,点击“+”号展开,可以看到下一层的“Source Group 1”,我们需要向这个里面加入源文件,点击“Source Group 1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如下图如示。

选中其中的“Add file to Group ‘Source Group 1’”,出现一个对话框,要求寻找源文件,如下图所示。

注意,该对话框下面的“文件类型”默认为C source file(*.c),我们可以通过调整这个来选择过滤我们想要格式的文件,从而帮助我们快速查找文件。如果是汇编文件,就选择“asm source file”;如果是目标文件,选择“Object file”;如果是库文件,选择“Library file”。最后点击“Add”,也可以双击要添加的文件进行加入。注意:点击“Add”之后,窗口不会消失,如果要添加多个文件,可以不断添加,添加完毕此时再点击“Close”关闭该窗口。初学者时常误认为操作没有成功而再次双击同一文件或者再次点击“Add”,这时会出现如下的对话框。

在这里我们把刚新建的HelloWorld.c添加进去,文件添加进去之后,我们点击“Source Group 1”前面的“+”号,就会发现我们刚刚添加的文件HelloWrold.c已在其中了,双击文件名,即在代码区打开该源程序文件。
除了添加文件,我们还可以添加新的Group,操作和添加文件类似,出现下拉菜单之后我们选择“New Group”,这时就会在工程窗口看到新加的Group。对Group和添加文件的操作我们还可以通过点击工具栏上的彩色品字按钮进入“Components,Environment and Books”窗口,如下图所示。

双击列表中的项可以对该项进行重命名操作,点击空白处可以添加新的项,虚方框按钮也可以添加新的项,红叉表示删除选中的项,上下箭头用于调整当前选中项在列表中的位置,“Add Files”可以添加新的源文件,操作过程和前面添加文件的操作是一样的。

5.1.4 编译程序
程序代码写好之后就进入编译程序阶段,可以通过菜单,工具栏和浮动菜单多种方式来发起编译过程,也可以通过批处理文件进行,关于这个批处理文件在Output标签页的设置中提到过。

红线圈起来的区域就是对应的菜单编译命令和工具栏编译命令。各命令的含义如下:
 Clean target:清除编译结果。
 Build target:编译被修改的文件并且编译应用程序。
 Rebuild all target files:重新编译所有的源文件并且编译应用程序。
 Batch Build:通过前面输出的批处理文件进行编译。
 Translate **.*:编译某个源文件,**.*代表要编译的源文件。
 Stop build:只有编译进行过程中这一项才有效。
通过在工程窗口“Target 1”上点击右键,也可以弹出相应的编译菜单,各命令含义和上面一致。

现在就让我们来编译我们的“HelloWorld”,如下图所示,编译的结果会在输出窗口显示。


很遗憾,有不少错误,也许你早就发现我们的代码中使用了很多我们没有定义的而且也不属于标准C的一些函数,没错这就是ST固件库给我们提供的函数,我们要做的就是把固件库添加到我们的工程中,和其他的开发环境一下,我们可以直接添加固件库的源文件和工程一起编译,也可以通过添加已经编译好的静态连接库(*.lib)文件。这里我们以后者为例,这些库在我们安装好Keil开发环境的时候已经提供了,路径一般在你安装目录下的ARM\RV31\LIB\中,例如我这里的路径是D:\Keil\ARM\RV31\LIB\ST。这里我们将添加一个新的Group,取名为FWLIB。然后将库文件添加到这个Group中,具体的操作过程可以参照编写源程序章节。添加库之后我们再次编译。
问题解决了,当出现“0 Error(s), 0 Warning(s)”的时候也就意味着我们的程序已经通过了语法检查,有时候一些Warning也不影响程序执行,但是我们要慎重对待,仔细分析每一个Warning。如果是源程序中有语法错误或者警告,我们可以通过双击输出窗口的该行,快速定位到出错的位置。

5.1.5 调试程序
编译通过只是说明我们的代码没有语法错误,至于源程序中存在的其他错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部分的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发接下来我们需要运行我们的程序来验证是否达到了预期的目的。也就是程序调试,程序调试往往是程序开发过程中最难的阶段,尤其是对一些比较大型的程序。下面我们就来看看uVision3对调试的支持。

5.1.5.1 常用的调试命令
在对工程成功进行汇编、连接之后,按Ctrl+F5或者使用菜单Debug->Start/Stop Debug Session即可进入调试状态。进入调试状态后,界面与编辑状态相比有明显的变化,Debug才单项中原来不能用的命令现在已经可以使用了,工具栏会多出一个用于运行和调试的工具栏,如下图所示,Debug菜单上的大部分命令可以在此找到对应的快捷按钮。

常用的Debug菜单命令如下所示:
 Start/Stop Debug Session:开始或者停止调试。
 Run:一直执行下一个活动的断点。
 Step:单步执行。
 Step Over:过程单步执行,即将一个函数作为一个语句来执行。
 Step out of current Function:跳出当前的函数。
 Run to Cursor line:执行到光标所在的行。
 Stop Running:停止运行。
 Breakpoints:打开断点对话框。
 Insert/Remove Breakpoint:在当前行插入/删除一个断点。
 Enable/Disable Breakpoint:激活当前行的断点或者使断点无效。
 Disable All Breakpoints:使程序中所有的断点都无效。
 Kill all Breakpoints:删除程序中所有的断点。

学习程序调试,必须明确两个重要的概念,即单步执行与全速执行。全速执行是指一行程序执行完了以后紧接着执行下一行程序,中间不停止,这样程序执行的速度就很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。单步执行是每次执行一行程序,执行完该行程序执行完以后即停止,等待命令执行下一行程序,此时我们可以观察该行程序执行完以后得到的结果,是否与我们写程序行所想要得的结果相同,借此可以找到程序中问题所在。程序调试中,这两种运行方式都要用到,要灵活应用,可以大大提高调试效率。
在调试窗口中,我们可以看到一个黄色的调试箭头,指向了当前执行到的程序行。

5.1.5.2 断点设置
程序调试时,有些程序行往往很难确认什么时候能够执行到,这类问题就不适合单步调试,这是我们需要使用程序调试中另一种非常重要的方法——断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点之后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关的变量值,以确定问题所在。设置断点的命令请参考上一节常用调试命令介绍。一旦某一行被设置了断点,我们可以在程序行的左端看到一个红色方框(如图5.24调试窗口图所示),如果该断点被禁用,方框将会变为白色。
除了在某程序行设置断点这一基本方法以外,uVision3还提供了多种设置断点的方法,按Debug->Breakpoints,即出现一个对话框,该对话框用于对断点进行详细的设置,如下图所示。

图5.26中的Expression后的编辑框用于输入表达式,该表达式用于确定程序停止运行的条件,功能强大,涉及到uVision3内置的一套调试算法,这里不做详细说明,请查阅相关帮助文档。

5.1.5.3 调试窗口
前面讲了调试的一些方法,里面多次提到检查程序的执行状态。调试窗口就是用于查看程序执行状态的。uVision3提供了多种调试窗口,如寄存器窗口,存储器窗口,反汇编窗口,外设窗口等,下面将会一一作介绍。

1. 寄存器窗口
图5.26是工程窗口寄存器页的内容,寄存器页包含了当前所有的工作寄存器和系统寄存器,每当程序中执行到对某个寄存器的操作时,该寄存器会反色显示,用鼠标单击然后按F2(鼠标连续单击两次),即可修改该值。
2. 存储器窗口
存储器窗口可以显示系统中各种内存中的值,通过在Address后的编辑框中输入“字母:数字”即可显示相应内存值,其中字母C、D、I、X,分别代表代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM单元值、键入C:0即可显示从0开始的ROM单元中的值,即查看程序的二进制代码。该窗口的显示值可以以各种形式显示,如十进制、十六进制、字符型等。改变显示方式的方法是点鼠标右键,在弹出的快捷菜单中选择。除了显示,还可以修改内存中的值,如下图所示。

3. 查看和调用栈窗口
这个窗口可以帮助我们查看当前调用树的情况,我们还可以通过这个窗口查看和修改一些变量的值。鼠标停留在某个变量的时候点右键,在弹出的浮动菜单中选择Add ***to Watch window,Local 窗口显示当前一些局部变量的值,变量值的现实方式可以在十六进制和十进制之间切换,方式是在查看窗口点右键,在某个变量的Value栏用鼠标单击然后按F2(鼠标连续单击两次),即可修改该值。如下图所示。

4. 反汇编窗口
点击View->Dissambly Window可以打开反汇编窗口,该窗口可以显示反汇编后的代码、源代码和相应反汇编代码的混合代码,可以在该窗口进行在线汇编、利用该窗口跟踪已找行的代码、在该窗口按汇编代码的方式单步执行。点击鼠标右键,出现快捷菜单,如图5.29所示,其中Mixed Mode是以混合方式显示,Assembly Mode是以返回编码方式显示。

5. 外设窗口
为了能够比较直观地了解单片机中各种外设的使用情况,uVison3提供了一个外围接口对话框。通过Peripherals菜单,下拉菜单中的内容和你选择的芯片有关,会列出你所选择的芯片上所有的外设。选择一项你可以进入查看或修改该外设的一些状态。例如在这里我们是通过GPIO中的PB9来控制LED闪烁,我们可以打开GPIOB的状态对换框,如图5.30所示。

现在我们可以调试我们的HelloWorld了。程序运行时,你将看到开发板上的L1不停闪烁。

关键字:STM32系列  微控制器  keil 引用地址:STM32系列微控制器开发工具与应用——keil

上一篇:STM32为什么必须先配置时钟再配置GPIO
下一篇:genymotion模拟器x86架构转换为ARM架构方法

推荐阅读最新更新时间:2024-03-16 14:58

单片机在电磁炉功率控制中的应用
引言 近年来,随着环保和节能意识的逐步提高,一种新兴的"绿色的厨具"--电磁炉正在家庭中普及。它改变了传统的明火烹调方式,利用电磁感应原理,使电流通过内置的线圈时产生磁场,磁场内的磁力线感应到铁制器皿,产生无数高速运动的小涡流,涡流产生的巨大循环能量转换为有效热能,使锅具自行高速加热,最终直接加热食物。电磁炉的热效率达到90%以上,同时它无烟无灰,无污染,不升高室温,不产生一氧化碳等有害物质,安全环保。电磁炉还采用了微电脑控制,能够随意控制温度。正是由于上述种种优点,电磁炉在发达国家的家庭普及率已经达到80%以上。 为了提高电热转换率,家用电磁炉一般采用的是高频电磁炉,须将工频电整流成直流电后再逆变成20kHz以上的高频振
[单片机]
<font color='red'>单片机</font>在电磁炉功率控制中的应用
采用51单片机和CPLD构建复杂电路系统的设计思想
  一、引言   单片机市场可以用巨无霸来形容,其中51 单片机使用者就更多了,针对51 单片机无需更多的介绍,这里必须强调一点,只要你精通了51 单片机,以后在实际工作中选用其它单片机也很容易了,这就是初学者学习51 单片机的价值。选择51 单片机学习入门容易,倒不是说51 系列单片机比别的型号简单,其实在8 位单片机家族中,51 系列单片机算是复杂的,但51 单片机在中国推广最彻底,教程也是最丰富,基本不用看英文资料就能学好,所以特别适合初学者学习用。   下面说说CPLD,从近来跟学生和爱好者交往中发现,初学者都很“讨厌”它,问我为什么要把单片机和CPLD 放一块儿,那样不是增加了学习的难度吗?其实深入学习单片机后,你就
[单片机]
采用51<font color='red'>单片机</font>和CPLD构建复杂电路系统的设计思想
采用PIC单片机芯片的三相半控整流电路设计
  三相半控整流桥电路结构是一种常见的整流电路,其容易控制,成本较低。本文中介绍了一种基于 PIC690单片机与专用集成触发芯片TC787的三相半控整流电路,它结合专用集成触发芯片和数字触发器的优点 ,获得了高性能和高度对称的触发脉冲。它充分利用单片机内部资源 ,集相序自适应、系统参数在线调节和各种保护功能于一体,可用于对负载的恒电压控制。主电路采用了三相半控桥结构,直流侧采用LC滤波结构来提高输出的电压质量。      系统总体设计   本系统通过PIC690单片机作为主控制芯片,用晶闸管作为主要开关器件。设计的目标是保持输出的直流电压稳定,输出电压纹波小,交流输出测电流THD较低,性能可靠。   系统主要电路包括:三相
[单片机]
采用PIC<font color='red'>单片机</font>芯片的三相半控整流电路设计
STM32单片机的外部中断和中断控制器的特点解析
在外部中断和中断控制器中,我们首先阐述嵌套向量中断控制器(NVIC),他和处理器核的接口紧紧相连。可以实现低延时的中断处理和处理晚到的中断。主要具有以下几个特点: 1.60个可屏蔽中断通道; 2.16个可编程的优先等级; 3.低延时的异常和中断处理; 4.电源管理控制; 5.系统控制寄存器的实现。 其中每一个STM32系列芯片都会有一个产品向量表,博友们可以在相关 产品说明书中查看具体的中断问题。 接下来介绍中断优先级 在M3中有两个优先级的概念-抢占优先级和响应优先级。每一个中断源都必须指定这两种优先级。这里的中断抢占其实和89C51差不多,高中断优先级可以抢占正在进行中断处理的低中断优先级,也就是我们所说的中断嵌套。学习过
[单片机]
<font color='red'>STM32</font><font color='red'>单片机</font>的外部中断和中断控制器的特点解析
单片机--电子时钟(C51)
//简单电子时钟的C程序代码,没有消隐,没有按键功能 //author:helloword #include #define uint unsigned int #define uchar unsigned char sbit segoe=P1^3;//数码管的使能控制端,低电平有效 sbit duanxuan=P1^4;//数码管的段选控制,7段发光LED显示 sbit weixuan=P1^5;//数码管的位选控制,8个数码管的选择 uchar code smg_duan ={0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管段选码表,我们的数码管是共
[单片机]
Keil 的辅助工具和部份高级技巧
在前面的几讲中我们介绍了工程的建立方法,常用的调试方法,除此之外,Keil 还提供 了一些辅助工具如外围接口、性能分析、变量来源分析、代码作用分析等,帮助我们了解程 的性能、查找程序中的隐藏错误,快速查看程序变量名信息等,这一讲中将对这些功工具作 一介绍,另外还将介绍Keil 的部份高级调试技巧。 一、 辅助工具 这部份功能并不是直接用来进行程序调试的,但可以帮助我们进行程序的调试、程序性 能的分析,同样是一些很有用的工具。 1、外围接口 为了能够比较直观地了解单片机中定时器、中断、 并行端口、串行端口等常用外设的使用情况,Keil 提 供了一些外围接口对话框,通过Peripherals 菜单选择, 该菜单的下拉菜单内容与你建立项
[单片机]
<font color='red'>Keil</font> 的辅助工具和部份高级技巧
基于STC单片机的硬件电路设计
本文提出了一种基于STC单片机学习平台的硬件电路设计,采用了一款新型的单片机型号一STC12C5410AD,在学习平台中加入了一些串行接口的芯片,接口标准包括RS-232、SPI、IIC、1-wire等。学习平台的设计目标:ISP可编程、液晶屏显示、日历时钟(IIC接口芯片)、温度测量(1-wire接口芯片)、FLAH存储器(SPI接口芯片)、按键(腊换扫描按键)、电压测量(AD转换)。   1硬件系统概述   学习平台以STC12C5410AD为核心,结构图如图1所示。      1.1 STC12C5410AD单片机简介   STC12C5410AD单片机是宏晶科技在标准8051单片机内核基础上进行较大改进后
[单片机]
基于STC<font color='red'>单片机</font>的硬件电路设计
基于单片机和PWM控制方法调速实现无刷控制器检测设计
引言 伴随着城市化进程,人们生活的交通距离不断扩大,代替燃油汽车和自行车的电动车的普及大幅度的提高了电力资源的利用效率,促进了国民经济的健康发展。电动自行车以电力作动力,骑行中不产生污染,无损于空气质量。从改善人们的出行方式、保护环境和经济条件许可情况等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。电动自行车所用直流电机分为有刷电机和无刷电机两种。其中有刷电机控制较简单。但其易磨损的电刷带来维修保养工作量相对较大、使用寿命相对较短等缺点。而直流无刷电机本身没有易磨损部件,电机寿命长,维修保养工作量小。但直流无刷电机采用电子换向原理工作,其控制过程比有刷电机复杂得多,因此对控制器质量的要求也高得多。 目前电动自行车采
[单片机]
基于<font color='red'>单片机</font>和PWM控制方法调速实现无刷控制器检测设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved