新换了工作,需要熟悉新公司的产品开发项目,更新博客就懈怠了,不过环境的不同,也让我对嵌入式开发有了更深刻的理解。在原公司我主要负责在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()
{
LED = !LED;
DelayMS();
}
} void DelayMS(uint16 msec)
{
uint16 i;
volatile uint16 j;
for (i=; i<msec; i++)
{
for (j=; j<; j++)
{}
}
}

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

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

  1. 如何快速掌握一款新的MCU? (转)

      发布时间:2013-12-15 10:27:51 技术类别:单片机     个人分类:话题思考       任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量.指 ...

  2. 新浪SAE快速上手教程

     新浪SAE快速上手教程[1]如何免费开通新浪云 2014-07-18 > 新浪SAE快速上手教程[2]如何创建.删除应用 2014-07-24 > 新浪SAE快速上手教程[3]如何上传应 ...

  3. 微信小程序开发平台新功能「云开发」快速上手体验

    微信小程序开发平台刚刚开放了一个全新的功能:云开发. 简单地说就是将开发人员搭建微信小程序后端的成本再次降低,此文刚好在此产品公测时,来快速上手看看都有哪些方便开发者的功能更新. 微信小程序一直保持一 ...

  4. 【RL-TCPnet网络教程】第3章 初学RL-TCPnet的准备工作及其快速上手

    第3章       初学RL-TCPnet的准备工作及其快速上手 俗话说万事开头难,学习一门新的知识,难的往往不是知识本身,而是如何快速上手,需要什么资料和开发环境.一旦上手后,深入的学习就相对容易些 ...

  5. 第2章 初学 emWin 的准备工作及其快速上手

    以下内容转载自安富莱电子论坛:http://forum.armfly.com/forum.php?mod=viewthread&tid=24552&extra=page%3D3%26f ...

  6. 前端开发工具包 WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧

    ​ 前端开发工具包WijmoJS在2019年的第一个主要版本2019V1已经发布,本次发布包括了更加易用的在线Demo系统.各控件新增功能.NPM 包的改动,以及全新的浏览器API组件. WijmoJ ...

  7. 十分钟快速上手NutUI

    本文将会从 NutUI 初学者的使用入手,对 NutUI 做了一个快速的概述,希望能帮助新人在项目中快速上手. 文章包括以下主要内容 安装引入 NutUI NutUI 组件的使用 NutUI 主题和样 ...

  8. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  9. [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手

    原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...

随机推荐

  1. PAT Basic 1058

    1058 选择题 批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100),分别是学 ...

  2. ajax动态刷新下拉框

    动态post,避免直接给页面传输大量数据 /** * ajax通过商品刷新供应商 * by_kangyx * @throws IOException */ @RequestMapping(params ...

  3. Spring 结构

    Spring框架主要由7大模块组成,它们提供了企业级开发需要的所有功能,而且每个模块都可以单独使用,也可以和其它模块组合使用,灵活且方便的部署可以使开发的程序更加简单灵活. 核心模块 Spring C ...

  4. linux 搭建apache 服务器

    1.查看apache服务器 /etc/init.d/httpd status 若没有,则使用yum  -y install httpd  安装软件 2.设置开机启动 chkconfig httpd o ...

  5. Chrome 开发者工具(DevTools)中所有快捷方式列表(已整理)

    Chrome 开发者工具(DevTools)中所有快捷方式列表(已整理) 前言 Chrome DevTools提供了一些内置的快捷键,开发者利用这些快捷键可以节省常工作中很多日的开发时间.下面列出了每 ...

  6. 用btrace定位问题

    btrace 截取方法出入参 用btrace的手法,网上有很多.简单记录下我自己的使用经历. btrace脚本: import static com.sun.btrace.BTraceUtils.ex ...

  7. jvm gc回收机制

    jdk8取消永久代,增加metaspace元空间.使用本地内存,不使用堆内存. jstat -gcutil jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause p ...

  8. JavaScript 的时间消耗--摘抄

    JavaScript 的时间消耗 2017-12-24 dwqs 前端那些事儿 随着我们的网站越来越依赖 JavaScript, 我们有时会(无意)用一些不易追踪的方式来传输一些(耗时的)东西. 在这 ...

  9. WdatePicker.js的使用方法 帮助文档 使用说明(时间控件)*转载

    4. 日期范围限制 静态限制 注意:日期格式必须与 realDateFmt 和 realTimeFmt 一致 你可以给通过配置minDate(最小日期),maxDate(最大日期)为静态日期值,来限定 ...

  10. MACBOOK 忘记密码

    如果没有系统安装盘,可以采用下面的几种方法:首先,启动机器,启动时按住Apple和S键,以单用户模式(single user mode)进入系统.输入:mount -uv / 然后回车.接下来可以采用 ...