RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享幾個實用的嵌入式C程序代碼塊

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 2023-07-11 16:10 ? 次閱讀

在學習和工作開發(fā)的時候,經(jīng)常需要使用到各種各樣不太常用的操作,這種情況一般是自己手動寫一些小程序來處理。因為它們不太常用,所以經(jīng)常用了又沒保存,等到下一次在使用的時候又需要重寫,這樣的非常浪費時間和精力。
所以想在這里統(tǒng)一記錄一下,以備下次重新使用。代碼以實用為主,如果缺陷,歡迎指出。

1 十六進制字符轉(zhuǎn)整型數(shù)字

功能:

將16進制的字符串轉(zhuǎn)換為10進制的數(shù)字。我是沒有找到相應(yīng)的庫函數(shù),所以參考網(wǎng)上的代碼自己手動寫了個函數(shù)來實現(xiàn)。

常用的函數(shù)有atoi,atol,他們都是將10進制的數(shù)字字符串轉(zhuǎn)換為int或是long類型,所以在有些情況下不適用。


/*=============================================================================
#     FileName: hex2dec.cpp
#         Desc: Convert a hex string to a int number
#       Author: Caibiao Lee
#      Version: 
#   LastChange: 2018-11-26 
#      History:
=============================================================================*/


#include   
#include   
#include   
#include 


int c2i(char ch)  
{  
    // 如果是數(shù)字,則用數(shù)字的ASCII碼減去48, 如果ch = '2' ,則 '2' - 48 = 2  
    if(isdigit(ch))  
            return ch - 48;  


    // 如果是字母,但不是A~F,a~f則返回  
    if( ch < 'A' || (ch > 'F' && ch < 'a') || ch > 'z' )  
            return -1;  


    // 如果是大寫字母,則用數(shù)字的ASCII碼減去55, 如果ch = 'A' ,則 'A' - 55 = 10  
    // 如果是小寫字母,則用數(shù)字的ASCII碼減去87, 如果ch = 'a' ,則 'a' - 87 = 10  
    if(isalpha(ch))  
            return isupper(ch) ? ch - 55 : ch - 87;  


    return -1;  
} 


int hex2dec(char *hex)  
{  
    int len;  
    int num = 0;  
    int temp;  
    int bits;  
    int i;  
    char str[64] = {0};


 if(NULL==hex)
 {
  printf("input para error 
");
  return 0;
 }




 if(('0'==hex[0])&&(('X'==hex[1])||('x'==hex[1])))
 {
  strcpy(str,&hex[2]);
 }else
 {
  strcpy(str,hex);
 }


 printf("input num = %s 
",str);


    // 此例中 str = "1de" 長度為3, hex是main函數(shù)傳遞的  
    len = strlen(str);  


    for (i=0, temp=0; i

2 字符串轉(zhuǎn)整型

功能:

將正常輸入的16進制或是10進制的字符串轉(zhuǎn)換為int數(shù)據(jù)類型。

/*=============================================================================
#     FileName: hex2dec.cpp
#         Desc: Convert a hex/dec string to a int number
#       Author: Caibiao Lee
#      Version: 
#   LastChange: 2018-12-03 
#      History:
=============================================================================*/
#include   
#include   
#include   
#include 


int String2int(char *strChar)
{
 int len=0;
 const char *pstrCmp1="0123456789ABCDEF";
 const char *pstrCmp2="0123456789abcdef";


 char *pstr=NULL;
 int uiValue=0;
 int j=0; 
 unsigned int t=0;
 int i=0;
 if(NULL==strChar)
  return -1;
 if(0>=(len=strlen((const char *)strChar)))
  return -1;
 if(NULL!=(pstr=strstr(strChar,"0x"))||NULL!=(pstr=strstr(strChar,"0X")))
 {
  pstr=(char *)strChar+2;


  if(0>=(len=strlen((const char *)pstr)))
   return -1;
  for(i=(len-1);i>=0;i--)
  {
   if(pstr[i]>'F')
   {
    for(t=0;t

3 創(chuàng)建文件并填充固定數(shù)據(jù)

功能:

創(chuàng)建固定大小的一個文件,并且把這個文件填充為固定的數(shù)據(jù)。

/*=============================================================================
#     FileName: CreateFile.cpp
#         Desc: 創(chuàng)建固定大小的文件,然后填充固定的數(shù)據(jù)
#       Author: Caibiao Lee
#      Version: 
#   LastChange: 2018-11-26 
#      History:
=============================================================================*/
#include   
#include   
#include   
#include 


//#define FILL_DATA_VALUE  0xff
#define FILL_DATA_VALUE  0x30 //char 0


int c2i(char ch)  
{  
    if(isdigit(ch))  
            return ch - 48;  


    if( ch < 'A' || (ch > 'F' && ch < 'a') || ch > 'z' )  
            return -1;  


    if(isalpha(ch))  
            return isupper(ch) ? ch - 55 : ch - 87;  


    return -1;  
} 


int hex2dec(char *hex)  
{  
    int len;  
    int num = 0;  
    int temp;  
    int bits;  
    int i;  
    char str[64] = {0};


 if(NULL==hex)
 {
  printf("input para error 
");
  return 0;
 }


 if(('0'==hex[0])&&(('X'==hex[1])||('x'==hex[1])))
 {
  strcpy(str,&hex[2]);
 }else
 {
  strcpy(str,hex);
 }


 printf("input num = %s 
",str);


    len = strlen(str);  


    for (i=0, temp=0; i

運行結(jié)果:

biao@ubuntu:~/test/flash$ gcc CreateFile.cpp 
biao@ubuntu:~/test/flash$ ls
a.out  CreateFile.cpp  hex2dec.cpp  main.cpp  out.bin
biao@ubuntu:~/test/flash$ ./a.out ./out.bin 0x10
input num = 10 
Need To Write Data Len 16 
Fill Data Vale = 0x30 
biao@ubuntu:~/test/flash$ ls
a.out  CreateFile.cpp  hex2dec.cpp  main.cpp  out.bin
biao@ubuntu:~/test/flash$ vim out.bin 
  1 0000000000000000   

4 批量處理圖片

功能:

批處理將圖片前面固定的字節(jié)數(shù)刪除。

/*=============================================================================
#     FileName: CutFile.cpp
#         Desc: 批量處理,將圖片的前面固定字節(jié)刪除
#       Author: Caibiao Lee
#      Version: 
#   LastChange: 2018-11-26 
#      History:
=============================================================================*/
#include 
#include 
#include 
#include 
#include 




#define START_READ_POSITION  128
#define PHOTO_START_TIME  83641
//l_s32PhotoTime = 92809;


int Cut_file(char * InputFile)
{
 FILE *l_pFileInput = NULL;
 FILE *l_pFileOutput = NULL;
 char l_ars8OutputName[128] = {0};
 unsigned char l_arru8TempData[1024] = {0};
 int l_s32Ret = 0;
 static unsigned int ls_u32Num = 0;




 if(NULL== InputFile) 
 {
  goto ERROR;
 }


 //sprintf(l_ars8OutputName,"./outfile/_%s",&InputFile[8]);
 sprintf(l_ars8OutputName,"./outfile/00%d.jpg",ls_u32Num++);


 //printf("out file name %s 
",l_ars8OutputName);


 l_pFileInput = fopen(InputFile,"rb+");
 if(NULL==l_pFileInput)
 {
  printf("input file open error
");
  goto ERROR;
 }


 l_pFileOutput = fopen(l_ars8OutputName,"w+");
 if(NULL==l_pFileOutput)
 {
  printf("out file open error
");
  goto ERROR;
 }


 fseek(l_pFileInput,START_READ_POSITION,SEEK_SET);


 while(!feof(l_pFileInput))
 {
  l_s32Ret = fread(l_arru8TempData,1,1024,l_pFileInput);
  if(l_s32Ret<0)
  {
   break;
  }


  l_s32Ret = fwrite(l_arru8TempData,1,l_s32Ret,l_pFileOutput);
  if(l_s32Ret<0)
  {
   break;
  }
 }


ERROR:
 if(NULL!=l_pFileOutput)
 {
  fclose(l_pFileOutput);
  l_pFileOutput =NULL;
 };


 if(NULL !=l_pFileInput);
 {
  fclose(l_pFileInput);
  l_pFileInput =NULL;
 }
}


int main(void)
{
 char l_arrs8InputName[128] = {0};
 char l_s8PhotoChannel = 0;
 int  l_s32PhotoTime = 0;


 l_s8PhotoChannel = 3;
 l_s32PhotoTime = PHOTO_START_TIME;


 /**從第一通道開始**/
 for(int j=1;j

運行結(jié)果:

biao@ubuntu:~/test/photo$ gcc CutFile.cpp 
biao@ubuntu:~/test/photo$ ls
a.out  CutFile.cpp  image  outfile
biao@ubuntu:~/test/photo$ ./a.out 
./image/1Y083642.jpg
./image/1Y083714.jpg
./image/1Y083747.jpg
./image/1Y083820.jpg
./image/1Y083853.jpg
./image/1Y083925.jpg
./image/1Y084157.jpg
./image/1Y084228.jpg
./image/1Y084301.jpg
./image/1Y084334.jpg
./image/1Y084406.jpg
./image/1Y084439.jpg
./image/1Y084711.jpg
./image/1Y084742.jpg
./image/1Y173524.jpg
./image/1Y173556.jpg
./image/1Y173629.jpg
./image/1Y173702.jpg
./image/1Y173933.jpg
./image/1Y174004.jpg
./image/1Y174244.jpg
./image/1Y174315.jpg
./image/1Y174348.jpg
./image/1Y174420.jpg
./image/1Y174454.jpg
./image/1Y174733.jpg
biao@ubuntu:~/test/photo$ tree
.
├── a.out
├── CutFile.cpp
├── image
│   ├── 1Y083642.jpg
│   ├── 1Y083714.jpg
│   ├── 1Y083747.jpg
│   ├── 1Y083820.jpg
│   ├── 1Y083853.jpg
│   ├── 1Y083925.jpg
│   ├── 1Y084157.jpg
│   ├── 1Y084228.jpg
│   ├── 1Y084301.jpg
│   ├── 1Y084334.jpg
│   ├── 1Y084406.jpg
│   ├── 1Y084439.jpg
│   ├── 1Y084711.jpg
│   ├── 1Y084742.jpg
│   ├── 1Y173524.jpg
│   ├── 1Y173556.jpg
│   ├── 1Y173629.jpg
│   ├── 1Y173702.jpg
│   ├── 1Y173933.jpg
│   ├── 1Y174004.jpg
│   ├── 1Y174244.jpg
│   ├── 1Y174315.jpg
│   ├── 1Y174348.jpg
│   ├── 1Y174420.jpg
│   ├── 1Y174454.jpg
│   └── 1Y174733.jpg
└── outfile
    ├── 000.jpg
    ├── 0010.jpg
    ├── 0011.jpg
    ├── 0012.jpg
    ├── 0013.jpg
    ├── 0014.jpg
    ├── 0015.jpg
    ├── 0016.jpg
    ├── 0017.jpg
    ├── 0018.jpg
    ├── 0019.jpg
    ├── 001.jpg
    ├── 0020.jpg
    ├── 0021.jpg
    ├── 0022.jpg
    ├── 0023.jpg
    ├── 0024.jpg
    ├── 0025.jpg
    ├── 002.jpg
    ├── 003.jpg
    ├── 004.jpg
    ├── 005.jpg
    ├── 006.jpg
    ├── 007.jpg
    ├── 008.jpg
    └── 009.jpg


2 directories, 54 files
biao@ubuntu:~/test/photo$ 

運行前需要創(chuàng)建兩個目錄,image用來存放需要處理的圖片,outfile用來存放處理過后的文件。這種處理文件批處理方式很暴力,偶爾用用還是可以的。

5 IO控制小程序

嵌入式設(shè)備系統(tǒng)一般為了節(jié)省空間,一般都會對系統(tǒng)進行裁剪,所以很多有用的命令都會被刪除。在嵌入式設(shè)備中要調(diào)試代碼也是比較麻煩的,一般只能看串口打印?,F(xiàn)在寫了個小程序,專門用來查看和控制海思Hi3520DV300芯片的IO電平狀態(tài)。

/*=============================================================================
#     FileName: Hi3520_IO_CTRL.cpp
#         Desc: Hi3520DV300 IO Write and  Read
#       Author: Caibiao Lee
#      Version: 
#   LastChange: 2018-11-30
#      History:
=============================================================================*/
#include 
#include 
#include "hstGpioAL.h"


int PrintfInputTips(char *ps8Name)
{
 printf("=========== error!!! ========

");
 printf("usage Write: %s GPIO bit value 
", ps8Name);
 printf("usage Read : %s GPIO bit 
", ps8Name);
 printf("eg Write 1 to GPIO1_bit02  :     %s 1 2 1
", ps8Name);
 printf("eg Read  GPIO1_bit02 Value :     %s 1 2 

", ps8Name);


 printf("=============BT20==================
")
 printf("USB HUB    GPIO_0_2  1_UP; 0_Down 
");
 printf("RESET_HD   GPIO_13_0 0_EN; 1_disEN
");
 printf("Power_HD   GPIO_13_3 1_UP; 0_Down 
");
 return 0;
}


int main(int argc, char **argv)
{
 if((3!=argc)&&(4!=argc))
 {
  PrintfInputTips(argv[0]);
  return -1;
 }


 unsigned char l_u8GPIONum = 0;
 unsigned char l_u8GPIOBit = 0;
 unsigned char l_u8SetValue = 0;


 GPIO_GROUP_E  l_eGpioGroup;
 GPIO_BIT_E   l_eBit;
 GPIO_DATA_E   l_eData;


 l_u8GPIONum   = atoi(argv[1]);
 l_u8GPIOBit   = atoi(argv[2]);


 if(l_u8GPIONum<14)
 {
  l_eGpioGroup = (GPIO_GROUP_E)l_u8GPIONum;
 }else
 {
  printf("l_u8GPIONum error l_u8GPIONum = %d
",l_u8GPIONum);
  return -1;
 };


 if(l_u8GPIOBit<8)
 {
  l_eBit = (GPIO_BIT_E)l_u8GPIOBit;
 }else
 {
  printf("l_u8GPIOBit error l_u8GPIOBit = %d
",l_u8GPIOBit);
  return -1;
 }


 if(NULL!=argv[3])
 {
  l_u8SetValue = atoi(argv[3]);
  if(0==l_u8SetValue)
  {
   l_eData = (GPIO_DATA_E)l_u8SetValue;
  }else if(1==l_u8SetValue)
  {
   l_eData = (GPIO_DATA_E)l_u8SetValue;
  }else
  {
   printf("l_u8SetValue error l_u8SetValue = %d
",l_u8SetValue);
  }
 }


 if(3==argc)                                                       
 {/**read**/                                                                                                                                                      
     printf("read GPIO%d Bit%d 
",l_u8GPIONum,l_u8GPIOBit);           
        /**set input**/                                               
        HstGpio_Set_Direction(l_eGpioGroup, l_eBit, GPIO_INPUT);                        


     /**read **/                                                                               
     char l_s8bit_val = 0;                                                                     
     HstGpio_Get_Value(l_eGpioGroup, l_eBit, &l_s8bit_val);                                    


     printf("read Data = %d 
",l_s8bit_val);                                                  


   }else if(4==argc)                                                                             
   {/**write**/                                                                                                                                                                            
       printf("Write GPIO %d; Bit %d; Value %d
",l_u8GPIONum,l_u8GPIOBit,l_u8SetValue);         


       /***set IO output*/                                                                       
       HstGpio_Set_Direction(l_eGpioGroup, l_eBit, GPIO_OUPUT);                                  


       /**Write To IO**/ 
    HstGpio_Set_Value(l_eGpioGroup,l_eBit,l_eData);
   }else                                            
   {                                                                                             


   }


 return 0;


}

6 文件固定位置插入數(shù)據(jù)

在文件的固定位置插入固定的數(shù)據(jù)。

#include 
#include 
#include 


#define BASIC_FILE_NAME  "./nandflash.bin"
#define UBOOT_FILE_NAME  "./u-boot.bin"
#define KERNEL_FILE_NAME "./kernel.bin"
#define ROOTFS_FILE_NAME "./rootfs.bin"
#define APP_FILE_NAME  "./app.bin"




#define UBOOT_POSITION  0x00
#define KERNEL_POSITION  0x100000
#define ROOTFS_POSITION  0x500000
#define APP_POSITION  0x2700000






int InsertData(FILE *pfBasic,FILE *psInsert,int s32Position)
{
 int l_S32Ret = 0;
 unsigned char l_arru8Temp[1024] = {0xff};


 fseek(pfBasic,s32Position,SEEK_SET);
 fseek(psInsert,0,SEEK_SET);
 while(1)
 {
  l_S32Ret = fread(l_arru8Temp,1,1024,psInsert);
  if(l_S32Ret > 0)
  {
   l_S32Ret = fwrite(l_arru8Temp,1,l_S32Ret,pfBasic);
   if(l_S32Ret<=0)
   {
    printf("line %d error l_S32Ret = %d 
",__LINE__,l_S32Ret);
    return -1;
   }
  }else
  {
   break;
  }
 }


 return 0;
}






int main(void)
{
 int l_s32Ret = 0;
 FILE *l_pfBasec = NULL;
 FILE *l_pfUboot = NULL;
 FILE *l_pfKernel = NULL;
 FILE *l_pfRootfs = NULL;
 FILE *l_pfApp = NULL;




 l_pfBasec = fopen(BASIC_FILE_NAME,"r+");
 if(NULL==l_pfBasec)
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }


 l_pfUboot = fopen(UBOOT_FILE_NAME,"r");
 if(NULL==l_pfUboot)
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }


 l_pfKernel = fopen(KERNEL_FILE_NAME,"r");
 if(NULL==l_pfKernel)
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }


 l_pfRootfs = fopen(ROOTFS_FILE_NAME,"r");
 if(NULL==l_pfRootfs)
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }


 l_pfApp = fopen(APP_FILE_NAME,"r");
 if(NULL==l_pfApp)
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }


 if(0> InsertData(l_pfBasec,l_pfUboot,UBOOT_POSITION))
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }


 if(0> InsertData(l_pfBasec,l_pfKernel,KERNEL_POSITION))
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }


 if(0> InsertData(l_pfBasec,l_pfRootfs,ROOTFS_POSITION))
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }


 if(0> InsertData(l_pfBasec,l_pfApp,APP_POSITION))
 {
  printf("line %d error 
",__LINE__);
  goto ERROR;
 }




ERROR:
 if(NULL!=l_pfBasec)
 {
  fclose(l_pfBasec);
  l_pfBasec = NULL;
 }


 if(NULL!=l_pfUboot)
 {
  fclose(l_pfUboot);
  l_pfUboot = NULL;
 }


 if(NULL!=l_pfKernel)
 {
  fclose(l_pfKernel);
  l_pfKernel = NULL;
 }




 if(NULL!=l_pfRootfs)
 {
  fclose(l_pfRootfs);
  l_pfRootfs = NULL;
 }


 if(NULL!=l_pfApp)
 {
  fclose(l_pfApp);
  l_pfApp = NULL;
 }


 return 0;
}

7 獲取本地IP地址

linux設(shè)備中獲取本地IP地址可以使用下面的程序,支持最大主機有三個網(wǎng)口的設(shè)備,當然這個網(wǎng)卡數(shù)可以修改。

#include 
#include 
#include 
#include 
#include 


int get_local_ip(char *ps8IpList)
{
    struct ifaddrs *ifAddrStruct;
    char l_s8IpAddr[INET_ADDRSTRLEN];
    void *tmpAddrPtr;
    int l_s32IPCount = 0;


    getifaddrs(&ifAddrStruct);
    while (ifAddrStruct != NULL) 
    {
        if (ifAddrStruct->ifa_addr->sa_family==AF_INET)
        {
            tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
            inet_ntop(AF_INET, tmpAddrPtr, l_s8IpAddr, INET_ADDRSTRLEN);
            if (strcmp(l_s8IpAddr, "127.0.0.1") != 0) 
            {
                if(l_s32IPCount == 0)
                {
                        memcpy(ps8IpList, l_s8IpAddr, INET_ADDRSTRLEN);
                } else 
                {
                        memcpy(ps8IpList+INET_ADDRSTRLEN, l_s8IpAddr, INET_ADDRSTRLEN);
                }
                l_s32IPCount++;
            }
        }
        ifAddrStruct=ifAddrStruct->ifa_next;
    }


    freeifaddrs(ifAddrStruct);
    return l_s32IPCount;
}


int main()
{
    char l_arrs8IpAddrList[3][INET_ADDRSTRLEN];
    int l_s32AddrCount;


    memset(l_arrs8IpAddrList, 0, sizeof(l_arrs8IpAddrList));


    l_s32AddrCount = get_local_ip(*l_arrs8IpAddrList);


    for(l_s32AddrCount;l_s32AddrCount>0;l_s32AddrCount--)
    {
        printf("Server Local IP%d: %s
",l_s32AddrCount,l_arrs8IpAddrList[l_s32AddrCount-1]);
    }


 return 0;
}
來源:https://caibiao-lee.blog.csdn.net/?type=blog





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 轉(zhuǎn)換器
    +關(guān)注

    關(guān)注

    27

    文章

    8694

    瀏覽量

    147085
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3587

    瀏覽量

    129435
  • ASCII碼
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    17304

原文標題:幾個實用的嵌入式C程序代碼塊

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    幾個實用的嵌入式C程序代碼

    在學習和工作開發(fā)的時候,經(jīng)常需要使用到各種各樣不太常用的操作,這種情況一般是自己手動寫一些小程序來處理。因為它們不太常用,所以經(jīng)常用了又沒保存,等到下一次在使用的時候又需要重寫,這樣的非常浪費時間和精力。
    發(fā)表于 07-11 16:09 ?521次閱讀

    嵌入式程序基于源代碼仿真調(diào)試

    前面一課設(shè)計了51單片機最小系統(tǒng)電路,使用51單片機的I/O口控制發(fā)光二極管的狀態(tài),并裝載運行了使用keil編寫的嵌入式程序。本次實驗應(yīng)用proteus結(jié)合keil對嵌入式C
    的頭像 發(fā)表于 11-01 09:24 ?1245次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>程序</b>基于源<b class='flag-5'>代碼</b>仿真調(diào)試

    如何為嵌入式應(yīng)用編寫優(yōu)秀的C++程序代碼

    高級語言,但最終被接受的是C語言。為了促使業(yè)界接受,C語言具有高質(zhì)量的程序代碼產(chǎn)生和透明除錯功能,另一方面,也正是在巨大的壓力下C語言才變得更有效率。 即使相對于
    發(fā)表于 09-22 16:29

    如何去編寫嵌入式系統(tǒng)的程序代碼

    嵌入式系統(tǒng)的基本架構(gòu)是由哪幾部分組成的?如何去編寫嵌入式系統(tǒng)的程序代碼?
    發(fā)表于 07-30 06:32

    嵌入式軟件開發(fā)過程之程序代碼分層

    嵌入式軟件開發(fā)過程中,在程序架構(gòu)的搭建完成之后,為了提高項目代碼的可讀性和可維護性等,應(yīng)對程序代碼分層
    發(fā)表于 12-21 06:13

    嵌入式系統(tǒng)的C程序設(shè)計

    嵌入式系統(tǒng)的C程序設(shè)計
    發(fā)表于 04-07 22:42 ?86次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)的<b class='flag-5'>C</b><b class='flag-5'>程序</b>設(shè)計

    IC卡的讀寫程序 (C語言源程序代碼)

    IC卡的讀寫程序 (C語言源程序代碼)
    發(fā)表于 03-25 08:56 ?354次下載

    嵌入式實時程序設(shè)計中C/C++代碼的優(yōu)化

    本文簡單介紹了嵌入式實時程序設(shè)計的特點和嵌入式系統(tǒng)設(shè)計中語言的選擇,著重介紹了以下幾種在嵌入式實時程序設(shè)計中優(yōu)化
    發(fā)表于 08-07 08:47 ?15次下載

    嵌入式程序設(shè)計中C/C++代碼的優(yōu)化

    本文介紹了在嵌入式程序設(shè)計中幾種提高C/C++代碼效率的方法,通過對例子的分析,探討了影響程序
    發(fā)表于 08-14 08:53 ?25次下載

    嵌入式系統(tǒng)的c程序設(shè)計

    嵌入式系統(tǒng)的c程序設(shè)計
    發(fā)表于 02-11 09:21 ?65次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)的<b class='flag-5'>c</b><b class='flag-5'>程序</b>設(shè)計

    頻率計程序代碼

    51單片機C語言應(yīng)用開發(fā) 程序代碼+原理圖 頻率計程序代碼
    發(fā)表于 06-29 18:28 ?12次下載

    嵌入式系統(tǒng)與C程序設(shè)計

    嵌入式系統(tǒng)與C程序設(shè)計
    發(fā)表于 10-30 10:20 ?13次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)與<b class='flag-5'>C</b><b class='flag-5'>程序</b>設(shè)計

    嵌入式外中斷c語言代碼

    嵌入式外中斷c語言代碼(arm嵌入式開發(fā)實例)-嵌入式外中斷c語言
    發(fā)表于 07-30 11:29 ?4次下載
    <b class='flag-5'>嵌入式</b>外中斷<b class='flag-5'>c</b>語言<b class='flag-5'>代碼</b>

    西門子博途SCL:REGION:構(gòu)建程序代碼的步驟

    可以使用指令“構(gòu)建程序代碼”,在 SCL 中構(gòu)建程序代碼并將其分為幾個不同區(qū)域。
    的頭像 發(fā)表于 07-31 09:09 ?6096次閱讀

    嵌入式程序員應(yīng)知道的幾個基本問題

    電子發(fā)燒友網(wǎng)站提供《嵌入式程序員應(yīng)知道的幾個基本問題.pdf》資料免費下載
    發(fā)表于 11-20 11:21 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>程序</b>員應(yīng)知道的<b class='flag-5'>幾個</b>基本問題
    RM新时代网站-首页