《无刷直流电机》第2章STM8微处理器开发环境(4) - 技术资料 - 电子技术论坛 - 最好最受欢迎电子论坛!

《无刷直流电机》第2章STM8微处理器开发环境(4)

本帖最后由 优易特电子 于 2015-1-27 17:40 编辑

续(3)。。。

2.3.4 IAR C语言程序设计        
IAR开发环境中编写程序同样也包括包括工程建立、工程配置、工程编译和工程调试等多个阶段。
1.工程创建
先创建一个workspace。选择“File->New>Workspace”创建一个新的工程。
选择“Project->Create New Project”,创建新工程的对话框,如图2-41所示。“Tool chain”默认是STM8 Series。在“Project templates”中选择“Empty project”,点击“OK”。
弹出Save As 对话框后,选择project保存的路径,并输入project 的名字。

2-64 烧录窗口
2-41  IAR创建Workspace
Workspace 窗口中,显示信息如图2-42所示。有Debug Release两个配置。默认配置为Debug
2-42 Debug配置
在添加文件到工程中之前,先保存workspace。选择”File->Save Workspace”, 指定要保存的路径,并输入workspace的名字。如图2-43所示。
2-43 输入workspace名字
一个workspace 文件的扩展名是eww。此文件列出了添加到workspace 中的所有的project。相关当前会话信息,比如windows的保存路径和断点保存于projectssetttings目录下。
2.文件添加
可选择“Project->Add Files” 选择要添加的C文件。找到相应MCU型号的头文件,拷贝到当前的工程目录中。默认地,头文件在IAR安装目录inc下,即“C:Program FilesIAR SystemsEmbedded Workbench 6.0 Kickstartstm8inc”。
本例中使用了iostm8s105s6.h文件
编写一个简单的C程序,源码如下:
源文件main.c
/* Includes ------------------------------------*/
#include "iostm8s105s6.h"
/* Global variables ---------------------------*/
unsigned int ms_count;

void CLK_Configuration(void)
{
          CLK_CKDIVR = 0x00;   /* fCPU=fMASTER = 16MHz */
}
void GPIO_Init(void)
{
    PD_DDR |= 0x0D;              /* Output.                  */
    PD_CR1 |= 0x0D;              /* PushPull.                */
    PD_CR2  = 0x00;              /* Output speed up to 2MHz. */
}
void TIM2_Init(void)
{
  TIM2_PSCR = 0x00;              /* Configure TIM2 prescaler =16. */
  TIM2_ARRH  = 0xC1;            /* Configure TIM2 period. */
  TIM2_ARRL  = 0x7F;            /* Configure TIM2 period. */
  TIM2_CNTRH = 0xC1;
  TIM2_CNTRL = 0x7F;
  TIM2_CR1 |= 0x81;              /* Enable TIM2. */
  TIM2_IER |= 0x01;              /* Enable TIM2 OVR interrupt. */               
}
main()
{
  asm("sim");  /* disable interrupts */
  ms_count = 0;
  CLK_Configuration();
  GPIO_Init();
  TIM2_Init();
  asm("rim") ;   /* enable interrupts */
  while (1)
  {
    asm("nop");
    asm("nop");
    asm("nop");  //嵌入汇编语言
  }
}        
声明一个中断向量,说明如下:
#pragma vector=0x02
__interrupt void interrupt_handler(void)
说明:
#pragma vector: 是IAR中断向量指令。
=0x02 : 其数字代表中断向量编号。STM8的地址是从0x00800开始,IAR的中断编号从0开始。中断向量号依次按照中断地址递增。如:
复位向量是0x008000,中断向量号是0x00
TRAP的中断地址是0x008004中断向量号是0x01
SPI中断号是0x0C;详见如图2-44所示。
__interrupt void interrupt_handler(void): 是声明一个中断函数,注意interrupt是两个下划线,interrupt_handler 是中断函数名字,可自己定义。
2-44 中断地址分配图表
一个简单的中断函数stm8s105_interrupt.c 如下:
/* Includes -----------------------------------*/
#include "iostm8s105s6.h"

/* External variables ------------------------------*/
extern unsigned int ms_count;

/* Defines an interrupt handler for TIM2_UPDATE vector. */
#pragma vector=15
__interrupt void TIM2_UPDATE_IRQHandler(void)
{
         TIM2_SR1 &=~(0x01);

          ms_count++;

          if(ms_count == 500)   /* 0.5秒中断 */
          {
            PD_ODR ^= 0x01;
            ms_count = 0;
          }
}
3.工程配置
1)选择“Project->Options”,或者在Workspace窗口,选中project名字,右击选择“Options…”。在Category列项中,选择“General Options”,如图2-45所示。在TargetDevice中,选择相应的MCU型号。其他选择默认。
2-45 MCU型号选择
2)在Category列项中,选择C/C++Compiler,显示compiler选项页,如图2-46所示。
2-46 Compiler选项页
在“List”选项卡中,选择Output list file, 输出列表文件,如图2-47所示。

2-54 Workspace窗口
List文件可查看汇编代码和每个段的二进制代码,还显示变量如何分配。List文件的结尾显示了堆栈,代码和数据存储器的大小。
可选择“Tools->Options”来配置更新改变的文件。如图2-55所示。
2-55 Options配置
若要看代码的大小,可找到工程目录下的 DebugList,在list下有.map文件。用记事本打开.map文件,在.map的末尾,可查看程序代码大小。
如本例中的.map文件部分内容如表2-10所示。
2-10 本例中的.map文件
[1] = D:TutorialEWSTM8SDebugObj
[2] = command line
[3] = dbgstm8smd.a
[4] = dlstm8smn.a

  294 bytes of readonly  code memory
  132 bytes of readonly  data memory
  274 bytes of readwrite data memory

Errors: none
Warnings: none
本例的程序代码是:294个字节
5.工程调试
选择“Project->Download and Debug”,进入调试状态。
使用Auto窗口:在调试状态下,选择“View->Auto”打开Auto窗口Auto窗口自动地显示当前的修改变量。如图2-56所示:
2-56 Auto窗口
观察窗口:选择“View>Watch”,打开观察窗口,如图2-57所示。
2-57 Watch窗口
寄存器窗口:选择“View>Register”,打开寄存器窗口。如图2-58所示。
2-58 Register窗口
6.烧录
IAR在调试时,可直接把代码下载到STM8里。
也可以通过STVP来烧录。在IAR工程当前目录下,有“DebugExe”目录,Exe下面有个.hex文件,这个就是目标文件。在STVP中调入HEX文件,配置好OPTION BYTE,即可进行程序的烧录。
使用STVP进行烧录的方法详见2.4.2章节。
2.4  STM8烧录
STM8芯片的烧录可直接在STVD开发环境下进行,也可以使用专用的STVP编程软件进行烧录。
2.4.1 使用STVD烧录
STVD开发环境下,选择“Tools -> Programmer”,出现如图2-59所示烧录界面。确认烧录的Target Device型号,选择正确的硬件设备。
2-59 Programmer对话框
Settings选项:对于STM8系列单片机,可选择 RLINKST-LINKSTICE等工具进行烧录。若不想使用STVD的编程器,点击“Run STVP”按钮可以直接运行STVP
Memory Areas选项:Memory 可以选择DATA MEMORYPROGRAM MEMORYDATA MEMROYEEPROM 数据;PROGRAM MEMORY:程序。如图2-60所示。
2-61 选择烧录目标文件
2-62烧录目标文件添加
Option Byte选项:根据应用配置合适的OPTION BYTE选项。如图2-63所示。



2-63 OPTION BYTE选项配置
Program选项:配置完成之后,点击Start 即可可以进行烧录。如图2-64所示。

030.jpg (27.6 KB, 下载次数: 6)

030.jpg

031.jpg (27.1 KB, 下载次数: 5)

031.jpg

032.jpg (25.86 KB, 下载次数: 10)

032.jpg

033.jpg (25.95 KB, 下载次数: 9)

033.jpg

034.jpg (28.04 KB, 下载次数: 7)

034.jpg

035.jpg (31.94 KB, 下载次数: 10)

035.jpg

036.jpg (14.36 KB, 下载次数: 4)

036.jpg

0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-5-4 00:36 , Processed in 0.632808 second(s), Total 63, Slave 42 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表