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

最新文章

  1. js打字机效果实现
  2. Ajax工作原理(转)
  3. 原创最简单的ORM例子
  4. java ReentrantLock可重入锁功能
  5. SpringMvc异常处理
  6. javascript 动态改变onclick事件
  7. struts2 struts.xml配置文件详解
  8. 创建mysql数据库
  9. oracle存储过程 --1
  10. 清北学堂 Pa
  11. erlang进程与操作系统线程
  12. Sublime text 替换成对标签 首尾匹配的HTML 标签
  13. python 在字典中添加键值对的方法。
  14. highcharts折线图-柱形图等
  15. 第四次oo博客
  16. Python_生成器函数进阶_39
  17. mysqlclient and mysql-python安装出错方法
  18. AngularJS中$timeout和$interval的用法详解
  19. hdu6330 多校3 L 画一个cube
  20. SAP NUMBER RANGE维护配置object FBN1 Deletion only possible if status is initial

热门文章

  1. PAT Basic 1017
  2. 关于学习Mongodb的几篇文章
  3. js中取绝对值的2种方法!
  4. apache下虚拟域名配置
  5. Working out (DP)
  6. caffe+vs2013+window10+GPU(CPU)配置
  7. 简单介绍一下solr?
  8. 转:C++ Vector用法深入剖析
  9. java.util.ResourceBundle 用法小介
  10. [NOIP2009] 提高组 洛谷P1072 Hankson 的趣味题