文章首页 | 基础入门 | 电路原理图 | 濮婎垰鑸伴崶鎯х杽娓氾拷 | PLC閸╄櫣顢�   閵嗗﹤顩ч弸婊冩灘濞嗐垺婀扮粩娆欑礉鐠囬攱瀵� Ctrl+D 閹靛濮╅弨鎯版閿涗焦鍔呯拫銏″亶閻ㄥ嫭鏁幐浣碘偓锟�娑撯偓鐠у嘲顒熸稊鐘辩鐠х柉绻樺銉礉閻㈤潧鐡欏鈧崣鎴犲竾濞嗐垼绻嬮幃顭掔磼.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

閳藉懐鏁哥捄顖氬彆瀵繑澧滈崘宀嬬礉閺堚偓閺傛壆澧楅妴濠勬暩鐎涙劗鏁哥捄顖氬彆瀵繗顓哥粻妤€娅掗妴瀣剁礉閻絻鐭鹃崗顒€绱¢弻銉嚄閹靛鍞� 閻絻鐭鹃崗顒€绱$拋锛勭暬閸c劊鈧劗鏁哥€涙劒绮犳稉姘眽閸涙ê绻€婢跺洦澧滈崘灞烩偓锟�
閳藉棗宕勬径鈺侇劅娴兼艾宕熼悧鍥ㄦ簚鐎圭偘绶�100 c鐠囶叀鈻� chm閺嶇厧绱¢妴鍌濈カ閺傛瑥鍞寸€圭顕涚紒鍡礉鐟曞棛娲婃笟瀣摍婢舵熬绱濋崘鍛啇楠炶¥鈧劗鏁哥€涙劒绮犳稉姘眽閸涙ê绻€婢跺洦澧滈崘灞烩偓锟�
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 嵌入式系统 >> ARM >> 正文

ARM C嵌入式编程

作者:佚名    文章来源:本站原创    点击数:3749    更新时间:2008-11-28

护和恢复的需要;

3、编写中断服务程序的一些基本原则:
     √避免在中断服务程序中做浮点运算:好的终端读物程序应该遵循短小有效这一原则,在中断服务程序中做浮点运算大大违背这一原则,同时有些处理器/编译器就是不允许在中断服务程序中做浮点运算;
     √中断服务程序不能有返回值:所以中断服务程序都定义为返回类型为void,即:void _irq Eint0_ISR(void);
     √中断服务函数不能传递参数:故参数列表为void,即:void _irq Eint0_ISR(void);
4、Static:
     一个static变量,其实就是全局变量,只不过它有作用域,它可用于保存变量所在函数被类此调用期间的中间状态,比如:
int cCout()
{
Static int loop = 0;
.......
loop++;
.......
  }
     loop变量的值会跟随着函数的调用次数而递增,函数退出后,loop的值还存在,只是loop只能在函数中才能被访问(函数作用域),而loop的内存空间也只会在函数第一次被调用时才会被分配和初始化,以后每次进入函数,都不为static分配了,而直接使用上一次的值。在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用,模块外其它函数无权访问,是一个本地全局变量。

5、Constant:
     将一个变量或对象定义成constant类型,则定义之后不能被更新(可读不可写),即在定义或说明类型时必须给他一个初始值。
     几种须要注意的地方:
     √如果const位于星号(*)的左侧,则const修饰指针所指向的变量,即指针指向常量;如:const int *a; 或int const *a;这两种情况相同(cost放在变量声明符的位置无关),指针指向一个常量,此时不能对内容进行更改,即不能有写操作语句*a=3;
     √如果cost位于型号的右侧,cost就是修饰指针本身,即指针本身是常量;如:int* const a;语句表示指针本身是常量,所指向内容不是常量,即a++是错误的。
     √如果星号左右侧都有const修饰,如:const int* const a;表示指针本身和指针指向的内容均为常量。

6.、Volatile:
     定义一个易失性变量,编译器有一种技术叫数据流分析,分析程序中的变量在哪里被赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化。当编译器检查到代码没有修改字段的值,就有可能在你访问字段时提供上次访问的缓存值,这能够提高程序的效率,但有时这些优化会带来问题,不是我们程序所需要的,特点是对硬件寄存器操作的程序,这时可以用volatile关键字禁止做这些优化。
     使用volatile变量的场合:
     √硬件寄存器通常要加volatile说明,因为每次对它的读写都可能有不同的意义;
     √在中断服务程序中修改的供其他程序检测用的变量需要加volatile声明;否则编译器可能对变量更新一次后每次都使用缓存值不再立即更新;
     √多任务环境下各任务间共享的标志应该加voatile关键字:在多线程访问某字段时,代码希望这些访问能够操作到操作(读取)到字段的最新值,同时写到变量的操作能立即更新;对字段加上volatile关键字,那么对该字段的任何请求(读/写)都会立刻得到执行。


Tags:ARM,C语言,嵌入式,编程  
责任编辑:admin
  • 上一篇文章:
  • 下一篇文章:
  • 请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
        没有任何评论
    閻㈤潧鐡欏鈧崣鎴犵秹閿涙碍鐪归梿鍡欐偅閸氬牆鎮囩猾鑽ゆ暩鐎涙劕鍩楁担婊€绗岄悽浣冪熅閸ュ墽娈戠純鎴犵彲閿涘lc瀹搞儲甯堕幎鈧張锟�,濡紕鏁搁弫鎵暩閻儴鐦�,閸楁洜澧栭張绡岲A缁涘鐡戦敍浣藉疮閽€鍐暩鐠侯垰娴樼純鎴犵彲缁儳宕曢敍灞艰礋瀹搞儳鈻肩敮鍫濆灡闁姳鐜崐绗衡偓鍌涱偨鏉╁骸鍙у▔銊ヤ簳娣団€冲彆娴兼褰块敍姘辨暩鐎涙劕绱戦崣鎴犵秹閿涳拷
    鐠у嫭鏋¢崠鍛瑓鏉烇拷
     [閸楁洜澧栭張楦跨カ閺傦拷]閸椾礁銇夌€涳缚绱伴崡鏇犲閺堝搫鐤勬笟锟�100 c鐠囷拷
     [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]LM324鏉╂劖鏂�4~20mA鏉烇拷1~5V閻㈠灚绁�
     [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]LM386妞圭粯鐎担鎾诲閸忓顥撻弨鎯с亣閸c劌甯�
     [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]936閻掑﹤褰撮悽浣冪熅閸樼喓鎮婇崶锟�
     [閸楁洜澧栭張楦跨カ閺傦拷]鐡掑懎锛愬▔銏$ゴ鐠猴拷+濞撯晛瀹�+閹躲儴顒熼惃鍕礋
     [闁氨鏁ら悽闈涚摍鐠佹崘顓告潪顖欐]S7-200PLC閻ㄥ嫪璞㈤惇鐔昏拫娴狅拷 S7_2
     [鏉烆垯娆㈢猾锟�]S7-200鎼存挻鏋冩禒璁圭礄閸忣煉绱�,STEP7
     [鏉烆垯娆㈢猾锟�]ModbusPoll閸滃odbusSalve閸忥拷
     [鏉烆垯娆㈢猾锟�]STEP7濡剝瀚欓柌蹇斿瘹娴犮倕绨� Smart_
     [鏉烆垯娆㈢猾锟�]Modbus鐠嬪啳鐦划鍓т紥 v1.024 缂侊拷
     [鏉烆垯娆㈢猾锟�]Modscan32閸滃odsim32,modb
     [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]89c51閸忓鐝涢弬閫涜雹閻噦绱檖rotues
     [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]娑撳洤鍕鹃崢鍞抮otues娴犺法婀$粙瀣碍濠ф劗鐖�
     [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]51閸楁洜澧栭張鍝勫坊缁嬶拷 protues娴犺法婀�
     [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]閸楁洜澧栭張锟� PROTUES娴犺法婀$€圭偘绶ユ径锟�
    閺堚偓閺傜増鏋冪粩锟�
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询