找回密码
 立即注册
查看: 388|回复: 19

51大人,时代变了,【STC: C11, C++11】 + 【Keil-C251, 优化】了解一下

[复制链接]
已绑定手机

121

主题

5082

回帖

1万

积分

超级版主

无情的代码机器

积分
11222
发表于 2026-8-15 01:45:43 | 显示全部楼层 |阅读模式
【STC: C11, C++11】 + 【Keil-C251, 优化】
截图202608151136212717.jpg
截图202608150143269788.jpg
截图202608150143362052.jpg
截图202608150142172842.jpg



CPP转C89在线工具:
截图202608190952047249.jpg

截图202608190951228909.jpg

当前支持的C++特性表(待测试):
截图202608190952485084.jpg
截图202608190953123868.jpg

编译功能:
后端支持SDCC编译,注:(SDCC 编译器编译,仅用于 STC8 位机或 STC32 位机的 8 位模式。
截图202608190954143191.jpg
打包下载功能:
可一键打包下载前端编辑区中文件
截图202608190956216172.jpg

可本地集成到keil环境的在线请求工具:
待发布...



欢迎测试交流,遇到问题可跟帖反馈~
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

82

主题

218

回帖

700

积分

高级会员

积分
700
发表于 2026-8-15 07:38:42 | 显示全部楼层
怎么做到的?

点评

语法降级 C++ for Ai8051U-32Bit, 一个关于 STCAI的 C++编译器想法讨论 https://www.stcaimcu.com/thread-16297-1-1.html (出处: 国芯人工智能技术交流网站)  详情 回复 发表于 2026-8-15 10:45
回复

使用道具 举报 送花

已绑定手机

6

主题

49

回帖

2214

积分

金牌会员

积分
2214
发表于 2026-8-15 08:17:43 | 显示全部楼层
main.c和main.cpp什么关系?main.c又是什么内容?把项目发上来参观学习啊

点评

.c是.cpp语法降级自动生成的,项目晚点上传,还要解决个工具链一键部署问题 降级后:  详情 回复 发表于 2026-8-15 10:48
回复

使用道具 举报 送花

已绑定手机

284

主题

490

回帖

2566

积分

金牌会员

积分
2566
发表于 2026-8-15 08:58:06 | 显示全部楼层
单片机编程用c语言足够了,c++编出来的程序臃肿得很

点评

萝卜白菜各有所爱 不过据说新型号支持外部FLASH运行程序?再肿也放得下了 [attachimg]147083[/attachimg]  详情 回复 发表于 2026-8-15 10:49
回复

使用道具 举报 送花

已绑定手机

121

主题

5082

回帖

1万

积分

超级版主

无情的代码机器

积分
11222
 楼主| 发表于 2026-8-15 10:45:17 | 显示全部楼层

语法降级



C++ for Ai8051U-32Bit, 一个关于 STCAI的 C++编译器想法讨论
https://www.stcaimcu.com/thread-16297-1-1.html
(出处: 国芯人工智能技术交流网站)


三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

121

主题

5082

回帖

1万

积分

超级版主

无情的代码机器

积分
11222
 楼主| 发表于 2026-8-15 10:48:00 | 显示全部楼层
huasha*** 发表于 2026-8-15 08:17
main.c和main.cpp什么关系?main.c又是什么内容?把项目发上来参观学习啊

.c是.cpp语法降级自动生成的,项目晚点上传,还要解决个工具链一键部署问题



  1. // 0.hello_world - Keil C251 第一个例程:多态实现,四个人 say "Hello World"
  2. // 小赵、小钱、小孙、小李 各自继承 Person 并 override say(),
  3. // 通过 Person* 数组 + 虚函数表(vptr[0])在运行时分发到各自实现。
  4. // 输出走 UART1(P3.0 TXD),115200/8N1;转译后用 Keil C251 编译烧录即可在串口看到四行问候。
  5. #include "Ai8051U_Cpp.h"
  6. #include "aicube_def.h"
  7. #define FOSC        24000000UL
  8. #define MAIN_Fosc FOSC
  9. #define SYSCLK FOSC
  10. #define UART1_RXSIZE            16
  11. uint8_t u8UART1RxCount;
  12. XDATA_VAR(uint8_t pu8UART1RxBuffer[UART1_RXSIZE]);
  13. class Person;
  14. void say_hello(Person* p);
  15. void UART1_SendString(char *str);
  16. void UART1_Init(void);
  17. void delay_ms(uint16_t ms);
  18. class Person {
  19. protected:
  20.     const char* name;
  21. public:
  22.     Person(const char* n) : name(n) {}
  23.     const char* get_name() { return name; }
  24.     virtual void say() { say_hello(this); }
  25. };
  26. class Zhao : public Person {
  27. public:
  28.     Zhao() : Person("小赵") {}
  29. };
  30. class Qian : public Person {
  31. public:
  32.     Qian() : Person("小钱") {}
  33. };
  34. class Sun : public Person {
  35. public:
  36.     Sun() : Person("小孙") {}
  37. };
  38. class Li : public Person {
  39. public:
  40.     Li() : Person("小李") {}
  41.                 void say() override {
  42.                         Person::say();
  43.                         UART1_SendString((char*)"小李:大人,时代变了!\n");
  44.                 }
  45. };
  46. void say_hello(Person* p)
  47. {
  48.     UART1_SendString((char*)p->get_name());
  49.     UART1_SendString((char*)" Hello World\r\n");
  50. }
  51. int main(void)
  52. {
  53.     Zhao zhao;
  54.     Qian qian;
  55.     Sun sun;
  56.     Li li;
  57.     Person *people[4];
  58.     P2M0 = 0xFF; P3M1 = 0x00;
  59.     P3M0 = 0x80; P3M1 = 0x00;
  60.                 P2 = 0x0F;
  61.     UART1_Init();
  62.                 UART1_SendString((char*)"1234567890\n");
  63.     people[0] = &zhao;
  64.     people[1] = &qian;
  65.     people[2] = &sun;
  66.     people[3] = &li;
  67.    
  68.     while (1) {
  69.         P2 = ~P2;
  70.         for (int i = 0; i < 4; i++) {
  71.             people[i]->say();         
  72.         }
  73.         delay_ms(1000);
  74.                                 
  75.     }
  76.     return 0;
  77. }
  78. ////////////////////////////////////////
  79. // 微秒延时函数
  80. // 入口参数: us (设置延时的微秒值)
  81. // 函数返回: 无
  82. ////////////////////////////////////////
  83. void delay_us(uint16_t us)
  84. {
  85.     do
  86.     {
  87.         NOP(34);                        //(MAIN_Fosc + 500000) / 1000000 - 6
  88.     } while (--us);
  89. }
  90. ////////////////////////////////////////
  91. // 毫秒延时函数
  92. // 入口参数: ms (设置延时的毫秒值)
  93. // 函数返回: 无
  94. ////////////////////////////////////////
  95. void delay_ms(uint16_t ms)
  96. {
  97.     uint16_t i;
  98.     do
  99.     {
  100.         i = MAIN_Fosc / 6000;
  101.         while (--i);
  102.     } while (--ms);
  103. }
  104. ////////////////////////////////////////
  105. // P3口初始化函数
  106. // 入口参数: 无
  107. // 函数返回: 无
  108. ////////////////////////////////////////
  109. void PORT3_Init(void)
  110. {
  111.     SetP3nInitLevelHigh(PIN_ALL);       //设置P3初始化电平
  112.     SetP3nQuasiMode(PIN_ALL);           //设置P3为准双向口模式
  113. //    SetP3nManualMode(PIN_ALL);          //设置P3手动配置端口模式
  114. //    DisableP3nPullUp(PIN_ALL);          //关闭P3内部上拉电阻
  115. //    DisableP3nPullDown(PIN_ALL);        //关闭P3内部下拉电阻
  116. //    EnableP3nSchmitt(PIN_ALL);          //使能P3施密特触发
  117. //    SetP3nSlewRateNormal(PIN_ALL);      //设置P3一般翻转速度
  118. //    SetP3nDrivingNormal(PIN_ALL);       //设置P3一般驱动能力
  119. //    SetP3nDigitalInput(PIN_ALL);        //使能P3数字信号输入功能
  120.     //<<AICUBE_USER_PORT3_INITIAL_BEGIN>>
  121.     // 在此添加用户初始化代码  
  122.     //<<AICUBE_USER_PORT3_INITIAL_END>>
  123. }
  124. ////////////////////////////////////////
  125. // 串口1初始化函数
  126. // 入口参数: 无
  127. // 函数返回: 无
  128. ////////////////////////////////////////
  129. void UART1_Init(void)
  130. {
  131. #ifdef BAUDRATE
  132. #undef BAUDRATE
  133. #endif
  134. #define BAUDRATE                (115200UL)
  135. #define T2_RELOAD               (65536 - (SYSCLK / BAUDRATE + 2) / 4)
  136.     UART1_SwitchP3031();                //设置串口数据端口: RxD (P3.0), TxD (P3.1)
  137.     UART1_Timer2BRT();                  //选择定时器2作为串口1波特率发生器
  138.     TIMER2_TimerMode();                 //设置定时器2为定时模式
  139.     TIMER2_1TMode();                    //设置定时器2为1T模式
  140.     TIMER2_SetPrescale(0);              //设置定时器2的8位预分频
  141.     TIMER2_SetReload16(T2_RELOAD);      //设置定时器2的16位重载值
  142.     TIMER2_Run();                       //定时器2开始运行
  143.     UART1_EnableRx();                   //使能串口1接收数据
  144.     UART1_Mode1();                      //设置串口1为模式1 (8位数据可变波特率)
  145.     UART1_SetTxFlag();                  //设置发送标志以提高发送效率
  146.     u8UART1RxCount = 0;                 //初始化接收字节数量
  147.     //<<AICUBE_USER_UART1_INITIAL_BEGIN>>
  148.     // 在此添加用户初始化代码  
  149.     //<<AICUBE_USER_UART1_INITIAL_END>>
  150. }
  151. ////////////////////////////////////////
  152. // 串口1发送数据函数
  153. // 入口参数: dat (待发送的字节数据)
  154. // 函数返回: 无
  155. ////////////////////////////////////////
  156. void UART1_SendByte(uint8_t dat)
  157. {
  158.     while (!UART1_CheckTxFlag());       //等待之前的数据发送完成
  159.     UART1_ClearTxFlag();                //清除完成标志
  160.     UART1_SendData(dat);                //发送当前字节
  161. }
  162. ////////////////////////////////////////
  163. // 串口1发送多字节数据函数
  164. // 入口参数: dat  (发送数据缓冲区)
  165. //           size (数据大小)
  166. // 函数返回: 无
  167. ////////////////////////////////////////
  168. void UART1_SendBuffer(uint8_t *dat, uint8_t size)
  169. {
  170.     while (size--)                      //判断数据是否结束
  171.         UART1_SendByte(*dat++);         //发送当前字节
  172. }
  173. ////////////////////////////////////////
  174. // 串口1发送字符串函数
  175. // 入口参数: str  (字符串首地址)
  176. // 函数返回: 无
  177. ////////////////////////////////////////
  178. void UART1_SendString(char *str)
  179. {
  180.     char c;
  181.     while (c = *str++)                  //判断字符串是否结束
  182.         UART1_SendByte(c);              //发送当前字节
  183. }
  184. ////////////////////////////////////////
  185. // 串口1轮询接收数据函数
  186. // 入口参数: 无
  187. // 函数返回: 无
  188. ////////////////////////////////////////
  189. void UART1_RecvPolling(void)
  190. {
  191.     XDATA_MARK(pu8UART1RxBuffer);       // 标记 xdata 变量(cpp2c 识别,见 Ai8051U_Cpp.h)
  192.     if (!UART1_CheckRxFlag())           //判断串口接收中断
  193.         return;
  194.     UART1_ClearRxFlag();                //清除串口接收中断标志
  195.     pu8UART1RxBuffer[u8UART1RxCount++] = UART1_ReadData(); //保存接收的数据到接收缓冲区
  196.     if (u8UART1RxCount >= UART1_RXSIZE)
  197.         u8UART1RxCount = 0;             //防止数组边界溢出
  198. }
复制代码


降级后:
  1. #include "Ai8051U.h"
  2. #undef main
  3. struct Person {
  4.   const char * name;
  5.   void *const * vptr;
  6. };
  7. struct Zhao {
  8.   struct Person D_2900;
  9. };
  10. struct Qian {
  11.   struct Person D_2940;
  12. };
  13. struct Sun {
  14.   struct Person D_2956;
  15. };
  16. struct Li {
  17.   struct Person D_2976;
  18. };
  19. void say_hello(struct Person *);
  20. const char* Person_get_name(struct Person * const);
  21. int cpp2c_main(void);
  22. void Zhao_ctor(struct Zhao * const);
  23. void Person_say(struct Person * const);
  24. void Person_ctor(struct Person * const, const char *);
  25. void Qian_ctor(struct Qian * const);
  26. void Sun_ctor(struct Sun * const);
  27. void Li_ctor(struct Li * const);
  28. void Li_say(struct Li * const);
  29. void delay_us(uint16_t);
  30. void delay_ms(uint16_t);
  31. void PORT3_Init(void);
  32. void UART1_Init(void);
  33. void UART1_SendByte(uint8_t);
  34. void UART1_SendBuffer(uint8_t *, uint8_t);
  35. void UART1_SendString(char *);
  36. void UART1_RecvPolling(void);
  37. static void *const vtbl_Zhao_v[] = { 0, 0, (void*)Person_say };
  38. static void *const vtbl_Qian_v[] = { 0, 0, (void*)Person_say };
  39. static void *const vtbl_Sun_v[] = { 0, 0, (void*)Person_say };
  40. static void *const vtbl_Li_v[] = { 0, 0, (void*)Li_say };
  41. static void *const vtbl_Person_v[] = { 0, 0, (void*)Person_say };
  42. void say_hello(struct Person * p)
  43. {
  44.   void *t_1;
  45.   t_1 = Person_get_name (p);
  46.   UART1_SendString (t_1);
  47.   UART1_SendString (" Hello World\r\n");
  48. }
  49. const char* Person_get_name(struct Person * const this)
  50. {
  51.   const char * D_3140;
  52.   D_3140 = this->name;
  53.   return D_3140;
  54. }
  55. int cpp2c_main(void)
  56. {
  57.   int D_3142;
  58.   struct Zhao zhao;
  59.   struct Qian qian;
  60.   struct Sun sun;
  61.   struct Li li;
  62.   struct Person * people[4];
  63.   int i;
  64.   int P2_0_1;
  65.   int t_2;
  66.   struct Person *t_3;
  67.   struct Person *t_4;
  68.   struct Person *t_5;
  69.   void *const *t_6;
  70.   Zhao_ctor (&zhao);
  71.   Qian_ctor (&qian);
  72.   Sun_ctor (&sun);
  73.   Li_ctor (&li);
  74.   P2M0 = 255;
  75.   P3M1 = 0;
  76.   P3M0 = 128;
  77.   P3M1 = 0;
  78.   P2 = 15;
  79.   UART1_Init ();
  80.   UART1_SendString ("1234567890\n");
  81.   people[0] = &zhao.D_2900;
  82.   people[1] = &qian.D_2940;
  83.   people[2] = &sun.D_2956;
  84.   people[3] = &li.D_2976;
  85. bb_D_3096:
  86.   P2_0_1 = P2;
  87.   t_2 = ~P2_0_1;
  88.   P2 = t_2;
  89.   i = 0;
  90.   goto bb_D_3095;
  91. bb_D_3094:
  92.   t_3 = people[i];
  93.   t_4 = people[i];
  94.   t_5 = people[i];
  95.   t_6 = t_5->vptr;
  96.   ((void (*)(struct Person *))(t_4->vptr[0])) (t_3);
  97.   i = i + 1;
  98. bb_D_3095:
  99.   if (i <= 3) goto bb_D_3094; else goto bb_D_3092;
  100. bb_D_3092:
  101.   delay_ms (1000);
  102.   goto bb_D_3096;
  103.   D_3142 = 0;
  104.   return D_3142;
  105.   D_3142 = 0;
  106.   return D_3142;
  107. }
  108. void Zhao_ctor(struct Zhao * const this)
  109. {
  110.   void *t_1;
  111.   void *const *t_2;
  112.   t_1 = &this->D_2900;
  113.   Person_ctor (t_1, "小赵");
  114.   t_2 = vtbl_Zhao_v + 2;
  115.   this->D_2900.vptr = t_2;
  116. }
  117. void Person_say(struct Person * const this)
  118. {
  119.   say_hello (this);
  120. }
  121. void Person_ctor(struct Person * const this, const char * n)
  122. {
  123.   void *const *t_1;
  124.   t_1 = vtbl_Person_v + 2;
  125.   this->vptr = t_1;
  126.   this->name = n;
  127. }
  128. void Qian_ctor(struct Qian * const this)
  129. {
  130.   void *t_1;
  131.   void *const *t_2;
  132.   t_1 = &this->D_2940;
  133.   Person_ctor (t_1, "小钱");
  134.   t_2 = vtbl_Qian_v + 2;
  135.   this->D_2940.vptr = t_2;
  136. }
  137. void Sun_ctor(struct Sun * const this)
  138. {
  139.   void *t_1;
  140.   void *const *t_2;
  141.   t_1 = &this->D_2956;
  142.   Person_ctor (t_1, "小孙");
  143.   t_2 = vtbl_Sun_v + 2;
  144.   this->D_2956.vptr = t_2;
  145. }
  146. void Li_ctor(struct Li * const this)
  147. {
  148.   void *t_1;
  149.   void *const *t_2;
  150.   t_1 = &this->D_2976;
  151.   Person_ctor (t_1, "小李");
  152.   t_2 = vtbl_Li_v + 2;
  153.   this->D_2976.vptr = t_2;
  154. }
  155. void Li_say(struct Li * const this)
  156. {
  157.   void *t_1;
  158.   t_1 = &this->D_2976;
  159.   Person_say (t_1);
  160.   UART1_SendString ("小李:大人,时代变了!\n");
  161. }
  162. void delay_us(uint16_t us)
  163. {
  164.   unsigned char retval_1;
  165. bb_D_3102:
  166.   us = us + 65535;
  167.   retval_1 = us != 0;
  168.   if (retval_1 != 0) goto bb_D_3102; else goto bb_D_3100;
  169. bb_D_3100:
  170.   ;
  171. }
  172. void delay_ms(uint16_t ms)
  173. {
  174.   unsigned char retval_2;
  175.   unsigned char retval_3;
  176.   uint16_t i;
  177. bb_D_3112:
  178.   i = 4000;
  179.   goto bb_D_3110;
  180. bb_D_3111:
  181. bb_D_3110:
  182.   i = i + 65535;
  183.   retval_2 = i != 0;
  184.   if (retval_2 != 0) goto bb_D_3111; else goto bb_D_3109;
  185. bb_D_3109:
  186.   ms = ms + 65535;
  187.   retval_3 = ms != 0;
  188.   if (retval_3 != 0) goto bb_D_3112; else goto bb_D_3107;
  189. bb_D_3107:
  190.   ;
  191. }
  192. void PORT3_Init(void)
  193. {
  194.   unsigned char vol_4;
  195.   unsigned char vol_5;
  196.   unsigned char vol_6;
  197.   vol_4 = P3;
  198.   P3 = 255;
  199.   vol_5 = P3M0;
  200.   P3M0 = 0;
  201.   vol_6 = P3M1;
  202.   P3M1 = 0;
  203. }
  204. void UART1_Init(void)
  205. {
  206.   int P_SW1_7_1;
  207.   int t_2;
  208.   int AUXR_8_3;
  209.   int t_4;
  210.   int AUXR_9_5;
  211.   int t_6;
  212.   int AUXR_10_7;
  213.   int t_8;
  214.   int AUXR_11_9;
  215.   int t_10;
  216.   int SCON_12_11;
  217.   signed char SCON_13_12;
  218.   int t_13;
  219.   int t_14;
  220.   unsigned char t_15;
  221.   P_SW1_7_1 = P_SW1;
  222.   t_2 = P_SW1_7_1 & 63;
  223.   P_SW1 = t_2;
  224.   AUXR_8_3 = AUXR;
  225.   t_4 = AUXR_8_3 | 1;
  226.   AUXR = t_4;
  227.   AUXR_9_5 = AUXR;
  228.   t_6 = AUXR_9_5 & 247;
  229.   AUXR = t_6;
  230.   AUXR_10_7 = AUXR;
  231.   t_8 = AUXR_10_7 | 4;
  232.   AUXR = t_8;
  233.   TM2PS = 0;
  234.   TH2 = 255;
  235.   TL2 = 204;
  236.   AUXR_11_9 = AUXR;
  237.   t_10 = AUXR_11_9 | 16;
  238.   AUXR = t_10;
  239.   REN = 1;
  240.   SCON_12_11 = SCON;
  241.   SCON_13_12 = (signed char) SCON_12_11;
  242.   t_13 = SCON_13_12 & 63;
  243.   t_14 = t_13 | 64;
  244.   t_15 = (unsigned char) t_14;
  245.   SCON = t_15;
  246.   TI = 1;
  247.   u8UART1RxCount = 0;
  248. }
  249. void UART1_SendByte(uint8_t dat)
  250. {
  251.   unsigned char retval_14;
  252.   int TI_15_1;
  253.   goto bb_D_3121;
  254. bb_D_3122:
  255. bb_D_3121:
  256.   TI_15_1 = TI;
  257.   retval_14 = TI_15_1 == 0;
  258.   if (retval_14 != 0) goto bb_D_3122; else goto bb_D_3120;
  259. bb_D_3120:
  260.   TI = 0;
  261.   SBUF = dat;
  262. }
  263. void UART1_SendBuffer(uint8_t * dat, uint8_t size)
  264. {
  265.   unsigned char retval_17;
  266.   int t_2;
  267.   int size_18_3;
  268.   uint8_t *dat_16_1;
  269.   goto bb_D_3128;
  270. bb_D_3129:
  271.   dat_16_1 = dat;
  272.   dat = dat_16_1 + 1;
  273.   t_2 = *dat_16_1;
  274.   UART1_SendByte (t_2);
  275. bb_D_3128:
  276.   size_18_3 = size;
  277.   size = size_18_3 + 255;
  278.   retval_17 = size_18_3 != 0;
  279.   if (retval_17 != 0) goto bb_D_3129; else goto bb_D_3127;
  280. bb_D_3127:
  281.   ;
  282. }
  283. void UART1_SendString(char * str)
  284. {
  285.   unsigned char retval_20;
  286.   signed char c;
  287.   char *str_21_2;
  288.   goto bb_D_3135;
  289. bb_D_3136:
  290.   c = (unsigned char) c;
  291.   UART1_SendByte (c);
  292. bb_D_3135:
  293.   str_21_2 = str;
  294.   str = str_21_2 + 1;
  295.   c = *str_21_2;
  296.   retval_20 = c != 0;
  297.   if (retval_20 != 0) goto bb_D_3136; else goto bb_D_3134;
  298. bb_D_3134:
  299.   ;
  300. }
  301. void UART1_RecvPolling(void)
  302. {
  303.   unsigned char retval_22;
  304.   int RI_23_1;
  305.   int u8UART1RxCount_25_3;
  306.   int t_4;
  307.   int t_5;
  308.   int SBUF_26_6;
  309.   RI_23_1 = RI;
  310.   retval_22 = RI_23_1 == 0;
  311.   if (retval_22 != 0) goto bb_D_3155; else goto bb_D_3156;
  312. bb_D_3155:
  313.   return;
  314. bb_D_3156:
  315.   RI = 0;
  316.   u8UART1RxCount_25_3 = u8UART1RxCount;
  317.   t_4 = u8UART1RxCount_25_3 + 1;
  318.   u8UART1RxCount = t_4;
  319.   t_5 = (int) u8UART1RxCount_25_3;
  320.   SBUF_26_6 = SBUF;
  321.   pu8UART1RxBuffer[t_5] = SBUF_26_6;
  322.   if (u8UART1RxCount > 15) goto bb_D_3157; else goto bb_D_3158;
  323. bb_D_3157:
  324.   u8UART1RxCount = 0;
  325.   goto bb_D_3159;
  326. bb_D_3158:
  327. bb_D_3159:
  328.   ;
  329. }
  330. void main(void)
  331. {
  332.   cpp2c_main();
  333. }
复制代码


三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

121

主题

5082

回帖

1万

积分

超级版主

无情的代码机器

积分
11222
 楼主| 发表于 2026-8-15 10:49:50 | 显示全部楼层
QQ6243*** 发表于 2026-8-15 08:58
单片机编程用c语言足够了,c++编出来的程序臃肿得很

萝卜白菜各有所爱


不过据说新型号支持外部FLASH运行程序?再肿也放得下了

截图202608151049468566.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

284

主题

490

回帖

2566

积分

金牌会员

积分
2566
发表于 2026-8-15 11:12:50 | 显示全部楼层
erci*** 发表于 2026-8-15 10:49
萝卜白菜各有所爱

这是哪个型号

点评

STC32G96K246-LQFP100/64,DMA支持【3组CAN-FD,USB-OTG-FS】, 2组ADC, 2组DAC, 4组OP https://www.stcaimcu.com/thread-22488-1-1.html (出处: 国芯人工智能技术交流网站)  详情 回复 发表于 2026-8-15 11:14
回复

使用道具 举报 送花

已绑定手机

121

主题

5082

回帖

1万

积分

超级版主

无情的代码机器

积分
11222
 楼主| 发表于 2026-8-15 11:14:07 | 显示全部楼层

STC32G96K246-LQFP100/64,DMA支持【3组CAN-FD,USB-OTG-FS】, 2组ADC, 2组DAC, 4组OP
https://www.stcaimcu.com/thread-22488-1-1.html
(出处: 国芯人工智能技术交流网站)


三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

27

主题

152

回帖

1087

积分

金牌会员

积分
1087
发表于 2026-8-15 12:19:35 | 显示全部楼层
感觉没啥用非必要不增加

点评

支持 C11 / C++11, 这个很有必要  详情 回复 发表于 2026-8-15 13:55
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-23 15:04 , Processed in 0.093010 second(s), 87 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表