如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)

2023-11-10

      新换了工作,需要熟悉新公司的产品开发项目,更新博客就懈怠了,不过环境的不同,也让我对嵌入式开发有了更深刻的理解。在原公司我主要负责在STM32F207芯片平台上, 利用UCOS+LWIP进行嵌入式服务器开发,工作涉及底层硬件,RTOS,协议栈,上层应用及前端网页,从产品的角度,是完整的实现了单个项目。不过到新公司后,连续调试了STM32F103, STM32L0(低功耗), TI CC2540三种CPU, 并在上面实现了相应的功能需求后,我对单片机这一块也有了更深刻的认识,这里就记录我如何上手CC2540芯片,并在其上实现引脚检测并通过485接口传送给上位机的过程。

     前提:两年多的STM32+MDK的开发经验(使用精通), 485调试和实现经验,没用过CC-DEBUG, IAR, 没了解过TI芯片

     开发流程: 第一天(下载安装IAR,下载CC2540参考手册, 安装CC-DEBUG, 熟悉IAR环境, 编译点亮LED灯), 第二天(完成RS485的实现,制定协议,并调试成功)

     开发经历:

     1. 下载安装IAR

     参考网上实现教程,除了最初版本使用太早,无法打开例程外,后来选择9.3之后,官方例程打开成功

     2. 下载CC2540参考手册

   去TI官网搜索CC2540,找到CC253x/4x手册

     3. 安装CC-DEBUG

    (1) 安装CC-DEBUG驱动

    将CC-DEBUG插入USB接口,此时设备管理器里显示为警示符号,下载CC-DEBUG驱动(window7测试通过),解压,并通过设备管理器安装,如下图即可。
    

    (2)连接CC-DEBUG和CPU

    工程板上的调试接口原理图如下:

下图为CC-DEBUG连接方式:

   

     3.3v是CC-DEBUG给工程板供电用的,如果工程板本身已经有独立供电,此时不能接(接可能会损害仿真器), 而Vdd一般来说要连接供电板电源正极(将CC-DEBGU的2, 9脚短接也可), 其它DC, DD, NRST, GND按照对应连接即可,如果工作正常,此时CC-DEBUG的红灯变为绿灯,本次连接通过

     4. 熟悉IAR环境

    (1) 安装辅助下载工具

    调试器工作成功后,参考例程,实现IAR和CC-DEBUG的联合调试,安装后就是成功的,不过IAR的下载必须进入调试模式,在点X才能退出,这令人很不爽,我就找到了一款官方的下载器 SmartRF 闪存编程器, 界面如下:

     按照上面的配置就可以实现快速下载。

  2. IAR的界面配置

  IAR的默认编译环境显示和MDK有很大不同,看着很不舒服,这里讲下主要的修改样式:

  Tools -> Editor -> show line numers 显示行号

  Tools -> Editor -> Colors and Fonts 这里面可以修改样式,我来解释常用的几种特性:

  C Keyword: C关键字, 像if, else等

  Strings: 字符串, 如"hello"

  char: 字符, 如'h'

  Preprocessor: 预处理器,类似#include, #error这些

  Number: 数字

  Comment: 注释

  修改颜色,字体,不过IAR的Type Styles如果选择Italic不适合显示,所以建议全部选择为Normal或者Bold

重要快捷键:

   Ctrl + K 注释  

   Ctrl + shift + K 取消注释 

   Ctrl + shift + F 全局查找 

   F7 编译

   F9设置断点

   至于全局替换,我没找到,唯一不爽的地方,还有个细节,通过View > BreakPoints, 可以查询到当前以使用的所有端点,即可自行去除。

4. 编译点亮LED灯,及项目的实现

  因为本身没用过TI的芯片和IAR, 所以参考官方例程,编写了点亮LED灯的测试代码。

#include "hal_types.h"
#include "hal_timer.h"
#include <stdlib.h>
#include <ioCC2540.h>

#define  LED  P1_0
void DelayMS(uint16 msec);

int main(void)
{
  /* Initialize hardware */
  HAL_BOARD_INIT();

  P1DIR |=  0x01; //设置P1.0为输出模式
  
  while(1)
  {
     LED = !LED;
     DelayMS(200);
  }
}

void DelayMS(uint16 msec)
{ 
    uint16 i;  
    volatile uint16 j; 
    for (i=0; i<msec; i++)
    {
        for (j=0; j<650; j++)
        {}
    } 
}

 

不过从编写成功,到下载还是,调试并运行还遇到很多坑,后续有时间补上,不过熟悉了基础部分后,在这基础上添加RS485的实现就很简单了。

转载于:https://www.cnblogs.com/zc110747/p/6729635.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历) 的相关文章

随机推荐

  • 用c语言、java、c++编写一个程序,输出九九乘法表。

    先上代码 include
  • PS故障风海报制作技术分享

    1 首先找一张看起来很酷的图 也可以选择自己喜欢的图片 2 复制图层 点击添加图层样式 选择混合选项 在高级混合里面的通道选项 有R G B三个通道选项 默认是全部勾选的状态 选择其中一个勾掉 关于通道应该选择哪一个或者哪几个 可以挨个尝试
  • GMM高斯混合模型聚类的EM估计过程matlab仿真

    目录 1 算法概述 2 仿真效果 3 MATLAB源码 1 算法概述 高斯混合模型 Gaussian Mixed Model 指的是多个高斯分布函数的线性组合 理论上GMM可以拟合出任意类型的分布 通常用于解决同一集合下的数据包含多个不同的
  • 算法,C技能树测评

    产品功能 技能树是一个帮助 IT 领域学习者进行职业成长的一站式学习工具 UI界面 产品交互 算法技能树 左边是对应算法技能树的目录 中间是内容 每个小知识点里面都会有对应的题目 完成题目这里就会显示绿色 没完成的则为白色 在中间每一题都有
  • 【TCP/IP】广播 - 定义、原理及编程实现

    本文共计2974字 预计阅读时间4分钟 目录 广播 广播的原理及形式 广播的编程与实现 套接字选项设置 发送者 接收者 拓展资料 广播 广播 Broadcast 是指封包在计算机网络中传输时 目的地址为网络中所有设备的一种传输方式 这里所说
  • PMBOK(第六版) PMP笔记——《第四章 项目整合管理》

    第 4 章 项目整合管理 从第四章开始 进入49个过程的学习 49个过程被划分为十大知识领域 分为十个章节 本章节是项目整合管理知识领域 主要讲述项目整合管理的7个过程 1 需要对什么进行整合管理 干系人需求 约束条件 项目管理各个过程 项
  • 创建图片外链——“极简图床”

    开发微信小程序项目 上传代码时要求项目文件大小不能超过2M 那么 当小程序页面里有很多图片时 如果全部放在项目文件中 就很容易使得代码包超过2M 为了压缩代码 这时就需要将图片放在其它平台上 然后在小程序项目代码中引用需要的图片的外链地址
  • Android控制界面布局的两种方式

    概念一 View Android所有UI组件都继承自View类 View类是一个抽象类 不能直接创建View类的对象 即不能直接实例化 通常是实例化View类的子类 即具体的UI组件或布局管理器 View类还有一个重要的子类 ViewGro
  • 播放器 potplayer rtsp播放器

    目录 potplayer potplayer 播放万播放下一曲 播放比例设置 html5 rtsp player GitHub Streamedian html5 rtsp player Play RTSP stream from IP c
  • 常用的正则表达式验证

    public abstract class RegexPatterns 手机号正则 public static final String PHONE REGEX 1 38 0 9 4 579 5 0 3 5 9 6 6 7 0135678
  • 彻底删除mac上的Win10分区

    背景 之前在优胜美地上用boot camp装的win10 后来升级到ei capitan了 问题 今天试着用boot camp移除windows 点继续就报错 说不能什么什么 然后用disk工具直接擦除了win10的分区并改为hfs分区 结
  • One stage&Two stage

    One stage Two stage 双阶段 单阶段 双阶段 单阶段 引文
  • 最热门的9个超级SEX问题

    无从选择 女人的身体被造物设计成传宗接代的载体 而SEX就是当初那只引诱我们上钩的苹果 不会忘记新生命诞生时 那场撕裂心肺的痛 那是女人完成自己使命的另类礼赞 那个曾经代表忠贞 圣洁的标签 被男人心怀窃喜地撕下 并据为己有 女人从此无法原价
  • Spring Boot中内置Tomcat最大连接数、线程数与等待数 实践调优

    在 Spring Boot 框架中 我们使用最多的是Tomcat 这是 Spring Boot 默认的容器技术 而且是内嵌式的 Tomcat Tomcat 是 Apache 基金下的一个轻量级的Servlet 容 器 支 持 Servlet
  • 离散型随机变量及其分布律(五)

    有些随机变量值是有限 它全部可能取到的个或可列无限多个 这种随机变量称为离散型随机变量 三种重要的离散型随机变量
  • [转载].一直不怎么明白PID的运算输出结果怎么换算成执行机构的控制量

    http bbs 21ic com icview 50831 1 1 html 小明接到这样一个任务 有一个水缸点漏水 而且漏水的速度还不一定固定不变 要求水面高度维持在某个位置 一旦发现水面高度低于要求位置 就要往水缸里加水 小明接到任务
  • 计算机系统概述

    操作系统的概念 功能 操作系统 Operating System OS 是指控制和管理整个计算机系统的硬件和软件资源 并合理地组织调度计算机的工作和资源的分配 以提供用户和其他软件方便的接口和环境 它说计算机系统中最基本的系统软件 操作系统
  • anaconda添加python虚拟环境

    先将anaconda的源更换为国内源 否则下载很慢 conda config add channels https mirrors tuna tsinghua edu cn anaconda pkgs free conda config a
  • feigin应用

    feigin发送post请求 1 服务方一定加上 RequestBody RequestMapping value queryPerson ResponseBody public Person queryPerson RequestBody
  • 如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)

    新换了工作 需要熟悉新公司的产品开发项目 更新博客就懈怠了 不过环境的不同 也让我对嵌入式开发有了更深刻的理解 在原公司我主要负责在STM32F207芯片平台上 利用UCOS LWIP进行嵌入式服务器开发 工作涉及底层硬件 RTOS 协议栈