【嵌入式开发工具】TI+IAR建立工程与在线调试

news2024/12/25 23:44:44

IAR于1983 年在瑞典乌普萨拉由工程师Anders Rundgren创立,“IAR”是 Ingenjörsfirman Anders Rundgren 的缩写,意思是Anders Rundgren工程公司。笔者接触到这个开发工具主要是因为其对早期Ti的芯片支持很好,开发起来比较方便。不过现在TI公司官网的资料都以CCS(Code Composer Studio)为集成开发环境来支持TI 的微控制器和嵌入式处理器产品的开发,所以本篇文章不再拘泥于一个固有的芯片,而是通过不容芯片型号来举例说明IAR这款嵌入式开发工具的使用。

目录

IAR工程搭建控制LED灯闪烁

IAR下载与安装

IAR环境调试 

IAR环境补充说明


IAR工程搭建控制LED灯闪烁

我们这里以CC2530举例介绍IAR环境搭建LED灯闪烁,CC2530是德州仪器(Texas Instruments)推出的一款常用的Zigbee模块。它采用了低功耗的SoC(系统级芯片)设计,集成了Zigbee通信协议栈和无线电频率部分,具有较高的性能和灵活性。CC2530模块广泛应用于家庭自动化、工业控制和传感器网络等领域。

首先我们打开IAR工具,从Project中选择Creat New Project建立新的工程,然后选择工具链为8051,点击OK之后选择工程存储的位置并命名工程为gpio,然后工程即建立完毕。左上角的摁扭点击即可以源文件进行开发。

然后将事先从Ti官网例程(目前Ti官网的例程已经为使用CCS集成开发环境的SDK)中摘取的Led控制程序拷贝到工程目录下,代码如下。

/***************************** 头文件 ****************************/
#include <ioCC2530.h>

/***************************** 宏定义 ***************************/
//类型定义
#define uint  unsigned int
#define uchar unsigned char

//定义控制灯的端口
#define LED1 P1_0	//定义LED1为P10口控制
#define LED2 P1_1	//定义LED2为P11口控制
#define LED3 P0_4	//定义LED3为P04口控制

/****************************** 函数声明 ******************************/
void Delay(uint);		//延时函数
void InitIO(void);		//初始化LED控制IO口函数


/****************************** 函数定义 ******************************/

/************************************************
函数名称:Delay
功    能:延时
参    数:无
返 回 值:无
*************************************************/
void Delay(uint n)
{
  uint i;
  for(i = 0;i<n;i++);
  for(i = 0;i<n;i++);
  for(i = 0;i<n;i++);
  for(i = 0;i<n;i++);
  for(i = 0;i<n;i++);
}
/************************************************
函数名称:InitIO
功    能:GPIO初始化
参    数:无
返 回 值:无
************************************************/
void InitIO(void)
{
  P1DIR |= 0x03;  //P10、P11定义为输出
  P0DIR |= 0x10;  //P04定义为输出
  LED1 = 1;
  LED2 = 1;
  LED3 = 1;	//LED灯初始化为关
}

/************************************************
函数名称:main
功    能:主函数
参    数:无
返 回 值:无
***********************************************/
void main(void)
{
  InitIO();		//初始化LED灯控制IO口
  
  while(1)                //死循环
  {  
    LED1 = !LED1;           // LED1灯闪一次
    Delay(50000);           
    LED2 = !LED2;           // LED2灯闪一次
    Delay(50000);            
    LED3 = !LED3;           // LED3灯闪一次
    Delay(50000);
    
  }
}

在IAR中将源文件添加到工程中。

我们下面对工程进行一些必要配置,保证其编译能够通过,选择工程并右键选择Options进行工程配置。

根据芯片类型找到设备文件正确配置Device为CC2530F256。

此时摁下下图红框右边的摁扭即可以Make来生成可执行文件,红框左边的摁扭为Compile,仅编译检查源文件语法错误,可以看到下面Messages窗口显示出Make的结果。

上图还有一些没有介绍的摁扭,这两个摁扭为查找和替换,这两个为添加书签和跳到书签。


IAR下载与安装

点击这里可以跳转官网下载IAR Embedded Workbench for MSP430,Ti提供的16 位 MSP430™ 微控制器 (MCU) 可提供经济实惠、适用于所有应用的解决方案。

下载完成之后点击Install IAR Embedded Workbench for MSP430进行工具安装,安装完成之后打开工具可以关注一下User guides 和Example projects这两个能够帮助我们快速构建我们的项目。

新建项目之后记得选择对应MSP430的Device,后边我用的截图均是之前比较久远项目。 

下图是MSP430开发板与控制LED灯相关的原理。

下面代码可以控制LED灯实现呼吸灯的效果,延时使用空跑指令实现,实际项目可通过定时器来实现延时。

#include<msp430.h>
int main(void)
{
	WDTCTL = WDTPW | WDTHOLD;
	unsigned int de1,de2,deley,i;
	i=0;
	de1=0;
	de2=500-de1;
	P1DIR=0x01;
	while(1)
	{
		if(i==0)
		{
			P1OUT=0x01;
			for(deley=0;deley<de1;deley++)
			{
				if(de1!=500)
					de1++;
				if(de1==500)
					i=1;
			}
			P1OUT=0x00;
			for(deley=0;deley<de2;deley++);
		}
		if(i==1)
		{
			P1OUT=0x01;
			for(deley=0;deley<de1;deley++)
			{
				if(de1!=0)
					de1--;
				if(de1==0)
					i=0;
			}
			P1OUT=0x00;
			for(deley=0;deley<de2;deley++);
		}
	}
}

IAR环境调试 

在调试之前我们进入Project的Debugger进行相关配置,因为我们使用的是FET,并且是并口连接电脑,对环境进行相关的配置如下(在Download页签中可以勾选上Verify download,保证下载的内容是正确的)。

然后点击debug摁扭即可进入在线调试界面。

我们按照上图的标号简单介绍一下对应的功能。

  1. 调试与断点摁扭:左侧红点为断点摁扭,点击一下能够在光标处插入断点,再点击一下即可取消断点,调试摁扭点击进入在线调试。
  2. 单步调试摁扭:从左到右为复位(Reset)摁扭,跳过(Step Over函数不进入执行),跳入(Step Into函数跳入执行),跳出(Step Out从一个函数跳出),单句执行(Next Statement),执行到光标处(Run to Cursor),全速运行(Go)。红框右手边那个摁扭是退出调试。
  3. WorkSpace:工作区,当前为Debug配置,只有在Debug才能进入调试模式。
  4. C语言窗口:绿色是当前待执行的语句。
  5. 汇编窗口:绿色是当前待执行的语句。
  6. 调试Log窗口:调试信息展示。

我们也可以查看外设以及核心的寄存器如下图。

 也可以查看某个具体变量的值。

可以查看不同存储区的内容以及SFR寄存器。 

点击右键也可以保存(填充)一定范围存储区地址数据。


IAR环境补充说明

在IAR环境中的Tools菜单中选择Options可以选择字体以及相关特殊字符的颜色。

在Windows窗口下还可以将编辑窗口进行拆分,实现同时多文件编辑。

最后请大家有时间可以多看看Help中的一些指导文件,这些指导文件都是集成开发环境一手的指导文件,比网络上的教程和相关书籍都更加具有指导意义。


 十六宿舍 原创作品,转载必须标注原文链接。

©2023 Yang Li. All rights reserved.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式中如何将BootLoader与APP合并成一个固件

1、前言 嵌入式固件一般分为BootLoader和App&#xff0c;BootLoader用于启动校验、App升级、App版本回滚等功能&#xff0c;BootLoader在cpu上电第一阶段中运行&#xff0c;之后跳转至App地址执行应用程序。 因此&#xff0c;在发布固件的时候&#xff0c;会存在BootLoader固件…

Redis02-持久化策略

目录 RDB&#xff08;Redis DataBase Backup file&#xff09; RDB执行原理 AOF&#xff08;Append-Only File&#xff09; RDB和AOF对比 Redis支持多种持久化方式&#xff0c;以确保数据在内存中持久存储&#xff0c;以便在Redis服务器重启时数据不会丢失。Redis中持久化的…

高效实用:批量重命名文件夹,提升工作效率

在日常生活和工作中&#xff0c;我们经常需要处理大量的文件夹&#xff0c;而文件夹的命名则直接关系到我们的管理效率和查找效率。如何快速、准确地批量重命名文件夹&#xff0c;提升工作效率呢&#xff1f;本文将提供一些实用的方法和技巧。现在一起来看看云炫文件管理器是如…

【Java 进阶篇】Java Cookie共享:让数据穿越不同应用的时空隧道

在Web开发中&#xff0c;Cookie是一种常见的会话管理技术&#xff0c;用于存储和传递用户相关的信息。通常&#xff0c;每个Web应用都会在用户的浏览器中设置自己的Cookie&#xff0c;以便在用户与应用之间保持状态。然而&#xff0c;有时我们需要在不同的应用之间共享Cookie数…

2.2整式的加减(第1课时)——合并同类项教学及作业设计

【学习目标】 1&#xff0e;理解同类项的概念&#xff0c;并能正确辨别同类项&#xff0e; 2&#xff0e;理解合并同类项的依据是乘法分配律&#xff0c;掌握合并同类项的方法&#xff0e; 知识点归纳&#xff1a; ★合并同类项后&#xff0c;所得的项的系数是___________…

Solidity数据类型之函数类型

solidity中函数的形式 function <function name>(<parameter types>) {internal|external|public|private} [pure|view|payable] [returns (<return types>)]每个关键字的意思&#xff08;方括号里面的写不写都可以&#xff09; function&#xff1a; 声明函…

基础知识:位运算

基础知识&#xff1a;位运算 1. 两类表达式 1. 两类表达式

【网安AIGC专题11.1】论文12:理解和解释代码,GPT-3大型语言模型学生创建的代码解释比较+错误代码的解释(是否可以发现并改正)

Comparing Code Explanations Created by Students and Large Language Models 写在最前面总结思考 背景介绍编程教育—代码理解和解释技能培养编程教育—解决方案研究问题研究结果 相关工作Code ComprehensionPedagogical Benifis of code explanationLarge Language Models i…

【监控指标】监控系统-prometheus、grafana。容器化部署。go语言 gin框架、gRPC框架的集成

文章目录 一、监控有哪些指标二、prometheus、grafana架构Prometheus 组件Grafana 组件架构优点 三、安装prometheus和node-exporter1. docker pull镜像2. 启动node-exporter3. 启动prometheus 四、promql基本语法五、grafana的安装和使用1. 新建空文件夹grafana-storage&#…

二维空间与三维空间的姿态表示法

二维空间与三维空间的姿态表示法 一、2D空间姿态表示法二、3D空间姿态表示法2.1 三个数表示空间姿态问题 2.2 九个数表示空间姿态问题 2.3 四个数表示空间姿态 结语Reference 假设&#xff0c;你有志成为我空军某航空旅歼-20飞行员&#xff0c;但要想开好飞机&#xff0c;那就得…

mac装不了python3.7.6

今天发现一个很奇怪的问题 但是我一换成 conda create -n DCA python3.8.12就是成功的 这个就很奇怪

数据结构——B树

文章目录 B树1. 概念2. B树插入分析3.插入过程4. B树插入实现5.B树验证6. B树性能分析7.B树&B*树8. 小结9. B树的运用MyISAMInnoDB 10. 总结 B树 可以用于查询的数据结构非常的多&#xff0c;比如说二插搜索树、平衡树、哈希表、位图、布隆过滤器&#xff0c;但如果需要存…

【MySQL】MySQL入门基础

文章目录 一、数据库基础1. 什么是数据库2. 数据库和文件3. 主流数据库&#xff08;关系型数据库&#xff09; 二、MySQL的基本使用1. 连接服务器2. 服务器管理3. 服务器、数据库、表关系4. 使用案例 三、数据的逻辑存储和实际存储四、MySQL的架构五、SQL分类六、存储引擎 一、…

Java基础-015-System.java常用类

Java基础-015-System.java常用类 1、标准输入输出2、获取属性3、System.java初始化4、设置标准输出System.out java/lang/System.java 1、标准输入输出 System.in、System.out public class Test {public static void main(String[] args) {String charsetName String.valueOf…

青少年python大赛知识点学习5--字典

python中的字典&#xff0c;与我们使用的新华字典有点像。索引与对象&#xff0c;新华字典存的是每个字的相关内容&#xff0c;python中的字典是一个容器类型的数据结构&#xff0c;通过key进行索引。 1.什么是字典 字典是python内置的重要数据之一&#xff0c;与列表一样是一…

Intel oneAPI笔记(2)--jupyter官方文档(oneAPI_Intro)学习笔记

前言 本文是对jupyterlab中oneAPI_Essentials/01_oneAPI_Intro文档的学习记录&#xff0c;包含对SYCL、DPC extends SYCL、oneAPI Programming models等介绍和SYCL代码的初步演示等内容 oneAPI编程模型综述 oneAPI编程模型提供了一个全面而统一的开发人员工具组合&#xff0…

Go与数据库:NoSQL数据库的应用

大家好&#xff01;我是[lincyang]。 今天我们将一起探索Go语言与NoSQL数据库结合的强大能力&#xff0c;并通过五个实际案例来深入理解它们的应用。 1. Go与MongoDB的结合 1.1 用户管理系统 在用户管理系统中&#xff0c;我们需要存储用户的基本信息和权限设置。MongoDB的…

MQTT协议零基础快速入门

MQTT协议零基础快速入门 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的发布/订阅消息传输协议&#xff0c;广泛应用于物联网&#xff08;IoT&#xff09;和机器对机器&#xff08;M2M&#xff09;通信场景。它具有简单、开放、易于实现等优…

产品经理入门学习(五):思维导图 原型设计

参考引用 黑马-产品经理入门基础课程 1. 思维导图的作用和应用场景 什么是思维导图&#xff1f; 思维导图是一种将思维进行可视化的实用工具。具体实现方法是用一个关键词去引发相关想法&#xff0c;再运用图文并茂的技巧把各级主题的关系用相互隶属的层级表现出来&#xff0c;…

多态 虚函数表深度剖析 纯干货讲解(2)

&#x1f4af; 博客内容&#xff1a;多态 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准C后端工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家&#xff1a;这里是CSD…