历史上的今天
今天是:2025年02月11日(星期二)
2020年02月11日 | 对PIC CCS编译器的一些使用心得
2020-02-11 来源:eefocus
简介:一直在用PIC CCS的编译器,给我的感觉就是:既有一些其它编译器无法比拟的地方。也有一些让人头痛的地方。
首先,感觉最大的好处就是内置了丰富的函数库,这一点让我感觉非常爽。可以让人腾出时间来,把更多的精力花在产品的开发上,而不是花在子程序的编写上。比如说delay_ms(),这个延时函数真的很不错,并不会随着晶振的改变而改变时间。还有串口引脚绑定,简直太方便了,只要一句话就行
#use rs232(baud=9600, xmit="PIN"_A2,rcv=PIN_A3)
还有集成了USB库等。
不过,CCS也有许多不尽人意的地方,比如说常量数组的长度问题,最多只能有0-255个长度的数组。写液晶驱动的时候就很有麻烦,显示一幅128*64的图片必须得放在四个数组里面才行,同时也加大了程序的开销。
还有就是常量指针的问题,前一阵移植圈圈的USB固件的时候,发现怎么也无法枚举成功。经过一阵瞎折腾,发现编译竟然不支持常量指针,害得我把存放描述符的结构体全部改成了数组。并且一个一个的往主机传送,才解决了这个问题。同时写液晶驱动时也会存在这个问题,必须得把字模数组定义成全局变量才行。
还有一个令人头疼的就是编译器不区分大小写,移植圈圈的程序时,发现怎么也编译不过,最后终于发现原来是大小写的问题。感觉这是个严重的问题,如果长时间在这编译器里写程序,很可能会养成大小写不分的习惯。
还有(*((volatile uchar *)PORT_A)),像这样的语句在CCS中会被报错,而在Keil及VC中则可以正常通过。
还有一点,感觉CCS 的编译器语法不怎么严谨,比如说我定义一个数组:
int8 a[]={
0x01,
0x02,
0x03,
0x04
};
如果我写成这样:
int8 a[]={
0x01,
0x02,
0x03
0x04
};
则仍然可以正常通过。
虽然CCS有许多不好的地方,但是相对于HI-TECH,我更喜欢CCS.
上一篇:PIC警笛声音的程序
史海拾趣
|
一直用altium designer,之前也用过ORCAD一段时间,仿真一般用PROTEUS。现在老板要买正版的,联系了ALTIUM报价太贵,有没有别的推荐?… 查看全部问答> |
|
Linux LCD驱动:LCD右屏颜色不对,左屏颜色正常(android)。 在做基于omap3430的android开发是,lcd驱动遇到如下问题:LCD可以正常显示,但是右边屏幕有些地方颜色泛蓝,请问调过LCD的专家帮忙。… 查看全部问答> |
|
《EVC高级编程及其应用开发》中第八章就一个例子,利用ADO访问ACCESS的一个问题 为什么程序的CreataConnection()时就该语句hr= CLSIDFromProgID( g_szADOCE31ConnProgID, &tClsid );就无法正确执行。 在程序中只量把ADOCE30.h换成了ADOCE31.h。另外程序中所有的ADOCE30也全换成了ADOCE31。 急!!参与有分啊~~~~ ...… 查看全部问答> |
|
http://blog.eeworld.net/gooogleman/archive/2009/04/03/4001784.aspx 按照上面KITL的教程指示,结果在DNW 上显示 USB serial wait for connecting . 此时点机 PB上的 attach device 则出现下列错误: (CoreCon) 16:19:5 ...… 查看全部问答> |
|
mobile c++ 手机关机处理事件 我想在手机关机时响应到一个事件,然后在这个事件中做一些其他处理.但现在无法得到手机关机事件. 比如:1:启动软件, 2;长按power键,3:响应到软件中的代码 4:在该代码中做其他处理. 问题:如何实现第三步?当 ...… 查看全部问答> |
|
我使用8M晶振,读取串行flash -AT45DB081,但是速度还是达不到我的要求(用c语言写的),想超频,不知道430能超到多少,稳定吗? 各位dx有没有什么解决速度的经验。… 查看全部问答> |
|
最近看了两个TI的文档呢。DSP281x_HeaderFiles_QuickStart_Readme和spru095a_TMS320F28x Boot ROM Reference Guide (Rev. A)这两个文档。了解了一下 DSP有了复位信号后,会跳到0x3FFFC0这个地址上去,假设现在是BOOT-ROM映射到0x3FF000这个地址上面 ...… 查看全部问答> |




