zoukankan      html  css  js  c++  java
  • 如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)

          新换了工作,需要熟悉新公司的产品开发项目,更新博客就懈怠了,不过环境的不同,也让我对嵌入式开发有了更深刻的理解。在原公司我主要负责在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的实现就很简单了。

  • 相关阅读:
    【JAVA笔记——道】JAVA对象销毁
    【JAVA笔记——道】并发编程CAS算法
    httpClientUtil的get请求
    python基础 day11 下 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业
    python基础 day11 上 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 事务 索引 python 操作mysql ORM sqlachemy学习
    Python基础 Day10 Gevent协程 SelectPollEpoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 RedisMemcached缓存 Paramiko SSH Twsited网络框架
    python基础 day9 进程、与线程区别 python GIL全局解释器锁 线程 进程
    python基础 day8 Socket语法及相关 SocketServer实现多并发
    python基础 day7 面向对象高级语法部分 异常处理 异常处理 Socket开发基础
    python基础 day6 面向对象的特性:封装、继承、多态 类、方法、
  • 原文地址:https://www.cnblogs.com/zc110747/p/6729635.html
Copyright © 2011-2022 走看看