<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹空獨舞
    邁著慵懶的步子,走在成長路上..... Dead
    posts - 4,comments - 1,trackbacks - 0
         摘要: 在STM32的固件庫和提供的例程中,到處都可以見到assert_param()的使用。如果打開任何一個例程中的stm32f10x_conf.h文件,就可以看到實際上assert_param是一個宏定義;  閱讀全文
    posted @ 2012-05-31 16:53 鷹空獨舞 閱讀(23918) | 評論 (1)編輯 收藏

    OSTaskCreate()
    函數(shù)原型:INT8U OSTaskCreate(void(*task)(void *pd),void *pdata,OS_STK *ptos,INT8U prio)
    調(diào)用者:任務或者是初始化代碼。
    作用:建立一個新任務,任務的建立可以在多個任務環(huán)境啟動之前,也可以在正在運行的任務中建立,中斷處理程序中不能建立任務,一個任務必須為無限循環(huán)結構,且不能有返回點。無論用戶程序中是否產(chǎn)生中斷,在初始化任務堆棧時,堆棧的結構必須與處理器中斷后寄存器入棧的順序結構相同。

    該函數(shù)返回一個8位的整形數(shù),調(diào)用該函數(shù)需要四個參數(shù):
    a 第一個參數(shù):task是一個指向任務代碼的指針,也就是用戶代碼的首地址,平常使用中我們把自己創(chuàng)建的任務的名字作為這個參數(shù)即可。
    b 第二個參數(shù):pdata指向一個數(shù)據(jù)結構,該結構用來在建立任務時向任務傳遞參數(shù)。
    c 第三個參數(shù):ptos是指向任務堆棧棧頂?shù)闹羔槪话惆褎?chuàng)建的任務的堆棧數(shù)組首地址賦給它。
    任務堆棧用來保存局部變量,函數(shù)參數(shù),返回地址以及任務被中斷時處理器寄存器的內(nèi)容,任務堆棧的大小決定于任務的需要以及預計的中斷嵌套層數(shù)。計算堆棧的大小需要知道任務的局部變量所占的空間,可能產(chǎn)生嵌套調(diào)用的函數(shù),及中斷嵌套所需的空間,如果初始化常量OS_STK_GROWTH設為1,堆棧被設為從內(nèi)存高地址向低地址增長,此時ptos應該指向任務堆棧空間的最高地址,反之,如果OS_STK_GROWTH設為0,堆棧將從內(nèi)存的低地址向高地址增長。
    d 第四個參數(shù):prio是任務的優(yōu)先級。每個任務必須有一個唯一的優(yōu)先級作為標識,數(shù)字越小,優(yōu)先級越高。

    返回值:
    OSTaskCreate()的返回值為下述之一:
    # OS_NO_ERR: 函數(shù)調(diào)用成功。
    # OS_PRIO_EXIST:具有該優(yōu)先級的任務已經(jīng)存在。
    # OS_PRIO_INVALID: 參數(shù)指定的優(yōu)先級大于OS_LOWEST_PRIO
    # OS_NO_MORE_TCB: 系統(tǒng)中沒有OS_TCB可以分配給任務了。

    注意:
    1 任何堆棧必須聲明為OS_STK類型。
    2 在任務中必須調(diào)用uCOS提供的下述過程之一:延時等待,任務掛起,等待事件發(fā)生(等待信號量,消息郵箱,消息隊列),以便其他任務能得到cpu。
    3 程序中不能使用優(yōu)先級0,1,2,3,以及OS_LOWEST_PRIO-3,OS_LOWEST_PRIO-2,OS_LOWEST_PRIO-1,

    OS_LOWEST_PRIO,這些優(yōu)先級系統(tǒng)保留,其余的56個優(yōu)先級提供給應用程序。

    范例:
    本例中,傳遞給任務Task1()的參數(shù)pdata不使用,所以指針pdata被設為NULLL,注意到程序中設定堆棧向低地址增長,傳遞的棧頂指針為高地址&Task1[1023],如果在你的程序中設定堆棧向高地址增長,則傳遞的棧頂指針應該為&Task1Stk[0]。
    OS_STK Task1Stk[1024];
    void main(void)
    {
    NT8U err;
       ...
    OSInit();//初始化uCOS-II
    ....
    OSTaskCreate(Task1,(void *)0,&Task1Stk[1023],25);
    ...
    OSStart();//啟動多任務環(huán)境
    }

    void Task1(void *pdata)
    {
    pdata=pdata;
    for(;;)
    {
    ......   //任務代碼
    }

    }

    posted @ 2012-05-31 16:23 鷹空獨舞 閱讀(499) | 評論 (0)編輯 收藏
    NAND FLASH  與NOR FLASH 的區(qū)別

    與Nand Flash對應的是另一種Flash:Nor Flash,其對應的特點是:
    “NorFlash的特點是芯片內(nèi)執(zhí)行(XIP,eXecute In Place),這樣應用程序可以直接在flash閃存內(nèi)運行,不必再把代碼讀到系統(tǒng)RAM中。如uboot中的ro段可以直接在NorFlash上運行,只需要把rw和zi段拷貝到RAM中運行即可。 ”

    而相應地,Nand Flash比較特殊:
    “NandFlash器件使用復雜的I/O口來串行地存取數(shù)據(jù),8個引腳用來傳送控制、地址和數(shù)據(jù)信息。由于時序較為復雜,所以一般CPU最好集成NAND控制器。另外由于NandFlash沒有掛接在地址總線上,所以如果想用NandFlash作為系統(tǒng)的啟動盤,就需要CPU具備特殊的功能,如s3c2410在被選擇為NandFlash啟動方式時會在上電時自動讀取NandFlash的4k數(shù)據(jù)到地址0的SRAM中。如果CPU不具備這種特殊功能,用戶不能直接運行NandFlash上的代碼,那可以采取其他方式,比如好多使用NandFlash的開發(fā)板除了使用NandFlash以外,還用上了一塊小的NorFlash來運行啟動代碼。”

    至于,為什么Nand Flash不能進行XIP的原因,主要是由于物理上的硬件限制,
    在讀取Flash時候,容易出現(xiàn)“位翻轉(zhuǎn)(bit convert)”:
    “在Flash的位翻轉(zhuǎn)(一個bit位發(fā)生翻轉(zhuǎn))現(xiàn)象上,NAND的出現(xiàn)幾率要比NorFlash大得多。這個問題在Flash存儲關鍵文件時是致命的,所以在使用NandFlash時建議同時使用EDC/ECC等校驗算法。 ”

    但是,如果能保證不出錯,也還是可以進行XIP,可以在其上執(zhí)行代碼的:
    “所謂XIP,就是CODE是在FLASH上直接運行. NANDFLASH只是不適合做XIP,但并不是不能做XIP.
    要一段CODE能夠正確的運行,要保證它的CODE是連續(xù)的,正確的.
    由于一些電氣特性的原因,NOR FLASH能夠做到這一點,不存在壞道或壞塊,所以能夠做XIP.
    而對于NAND FLASH, 它只保證它的BLOCK 0是好的,其他的塊并不保證,雖然出錯的幾率比較低,但還是有出錯的可能,所以CODE可能無法連續(xù)正確地執(zhí)行.
    但只要你有額外的保障措施,比如說在執(zhí)行CODE之前去做一次ECC校驗,來確保CODE是連續(xù)正確的.那你也可以做XIP. 事實上我就正在這么做,而且也證明是成功的. ”

    posted @ 2012-05-29 16:46 鷹空獨舞 閱讀(394) | 評論 (0)編輯 收藏
    再做課程設計時遇到的問題,及相應解決辦法
    1.添加背景音樂(設計的界面太單調(diào),以前只是知道一些基本語法,現(xiàn)想提升一下自己)
    主要代碼如下:
    import java.io.*; 
    import java.awt.*;
    import java.net.MalformedURLException; public static void main(String args[]) { 
    try {
    URL cb;
    File f = new File("C:\\Documents and Settings\\Administrator\\桌面\\刀出鞘.wav"); //引號里面的是音樂文件所在的絕對路徑
    cb = f.toURL();
    AudioClip aau;
    aau = Applet.newAudioClip(cb);
    //aau.play();
    aau.loop();
    //循環(huán)播放 aau.play() 單曲 aau.stop()停止播放
    }
     catch (MalformedURLException e){
        e.printStackTrace();
       } 
    }

    2.添加背景圖片
    主要代碼:
    import java.swing.*;
    final ImageIcon img=new ImageIcon("jiemian.jpg"); 
        JPanel jpnl =new JPanel(){  
           public void paintComponent(Graphics g){  
             g.drawImage(img.getImage(),0,0,580,500,null,null);  
             super.paintComponent(g);} };
           jpnl.setBounds(0,0,587,540);
           jpnl.setOpaque(false);  
    3.鍵盤輸入識別
    識別'Enter'鍵,主要代碼:
     public void keyPressed(KeyEvent ke){
      if(ke.getKeyChar() == ke.VK_ENTER){  //以前不知道,原來有一個系統(tǒng)中有專門的常量對應鍵盤特殊按鈕
       System.out.println ("ok................") ;
      }
     }
    4.按鈕數(shù)組及其響應 (剛開始時把它想復雜了)
    主要代碼:
    JButton btn[]=new JButton[5];
    .......
    void  define(){
        btn[0]=new JButton("btn1");
        btn[1]=new JButton("btn2");
        btn[2]=new JButton("btn3");
        btn[3]=new JButton("<html>按鈕四<br>和 按鈕五</html>");   //<html>......<br>可以實現(xiàn)按鈕上字符串換行顯示的功能
        btn[4]=new JButton("btn6");
        for(int i=0;i<5;i++)
        {
          btn[i].addActionListener(new ActListen());
        }
    }
     class ActListen implements ActionListener
     {
       public void actionPerformed(ActionEvent e)
     {
      JButton butn=(JButton)e.getSource();
      if(butn==btn[1]){            
        }        
      else if(butn==btn[2]){       
      }
      else if(butn==btn[0]){   
       }
       else if(butn==btn[3]){   
       }
      else if(butn==btn[4]){
       }
    }
    .........
    posted @ 2011-01-16 00:18 鷹空獨舞 閱讀(295) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 久久精品国产亚洲av麻豆蜜芽 | 69视频免费观看l| 学生妹亚洲一区二区| 亚洲国产成人久久综合碰| 美女被cao网站免费看在线看| 亚洲综合无码一区二区三区| 免费国内精品久久久久影院| 国产真人无码作爱视频免费| 亚洲精品无码专区在线播放| 亚洲精品色午夜无码专区日韩| 成年免费大片黄在线观看岛国| 一个人看的hd免费视频| 亚洲无人区视频大全| 亚洲精品国产福利一二区| 亚洲免费人成视频观看| www在线观看免费视频| 亚洲av片不卡无码久久| 亚洲中文字幕第一页在线 | 亚洲国产综合无码一区| 四虎成人免费观看在线网址| 久久久久久久岛国免费播放| 亚洲AV无码国产一区二区三区| 亚洲狠狠综合久久| 亚洲中文无韩国r级电影 | 亚洲中文无码线在线观看| 中文字幕亚洲无线码a| 午夜小视频免费观看| 免费A级毛片无码A∨| ssswww日本免费网站片| 亚洲夂夂婷婷色拍WW47| 中文字幕亚洲综合久久2| 国产午夜亚洲精品午夜鲁丝片| 永久免费AV无码网站在线观看| 在线a免费观看最新网站| 国产自国产自愉自愉免费24区 | 永久免费无码网站在线观看个| 亚洲av永久无码精品天堂久久| 亚洲国产人成网站在线电影动漫| 亚洲免费无码在线| 国产成人高清精品免费软件| 毛色毛片免费观看|