找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11707|回复: 2
打印 上一主题 下一主题
收起左侧

Ac6下新建一个STM32F4工程的步骤。

[复制链接]
跳转到指定楼层
楼主
ID:90014 发表于 2015-9-14 14:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. 打开System Workbench for STM32,新建一个Ac6工程


2. 填写工程名称,选择Ac6 STM32 MCU Project  Ac6 STM32 MCU GCC


3. 点击下一步


4. Create a new custom board,这里以STM32F407ZE为例说明


5. 填写芯片型号,仿真器类型和通讯方式,注意区分ST-LinkV2和ST-LinkV2-1


6. custom board 创建完毕,点击下一步


7. 需要事先准备好固件库,放在下图所示位置,建议从国内站点下载


8. 自己解压也可以让Ac6解压


9. 如下图选择,将固件库源代码拷贝到工程中


10.Ac6自动生成的startup_stm32.s,只有这个文件和MDK-ARM等环境不同
   stm32f4xx_it.c是从别处拷贝过来的,否则没有一个中断函数


11.编译正确并完成,才设置调试环境


12.编译正确并完成,双击Ac6 STM32 Debugging,自动设置调试参数,点击Debug就可以了。


13.如果仿真器搞错,可以手动设置调试参数。


14.仿真器类型可以在MDK-ARM中查看,绝对正版。


15.工程源文件的组织架构,仅有汇编文件不同


16.工程主函数内容为空,TIM7中断函数是从MDK-ARM环境中直接复制过来的


17.根据MDK-ARM中的汇编启动文件,定义了80个外部中断函数的偏移地址,以及弱定义本体
startup_stm32.s
startup_stm32.s.rar (2.88 KB, 下载次数: 15)



  1. /**
  2.   ******************************************************************************
  3.   * @file      startup_stm32.s
  4.   * @author    Ac6  add External Interrupts weak definition by wjandsq@163.com
  5.   * @version   V1.0.1
  6.   * @date      14-August-2015
  7.   ******************************************************************************
  8.   */
  9.   .syntax unified
  10.   .cpu cortex-m4
  11.   .thumb
  12. .global g_pfnVectors
  13. .global Default_Handler
  14. /* start address for the initialization values of the .data section.
  15. defined in linker script */
  16. .word _sidata
  17. /* start address for the .data section. defined in linker script */
  18. .word _sdata
  19. /* end address for the .data section. defined in linker script */
  20. .word _edata
  21. /* start address for the .bss section. defined in linker script */
  22. .word _sbss
  23. /* end address for the .bss section. defined in linker script */
  24. .word _ebss
  25. .equ  BootRAM,        0xF1E0F85F
  26. /**
  27. * @brief  This is the code that gets called when the processor first
  28. *          starts execution following a reset event. Only the absolutely
  29. *          necessary set is performed, after which the application
  30. *          supplied main() routine is called.
  31. * @param  None
  32. * @retval : None
  33. */
  34.     .section .text.Reset_Handler
  35. .weak Reset_Handler
  36. .type Reset_Handler, %function
  37. Reset_Handler:
  38. /* Copy the data segment initializers from flash to SRAM */
  39.   movs r1, #0
  40.   b LoopCopyDataInit
  41. CopyDataInit:
  42. ldr r3, =_sidata
  43. ldr r3, [r3, r1]
  44. str r3, [r0, r1]
  45. adds r1, r1, #4
  46. LoopCopyDataInit:
  47. ldr r0, =_sdata
  48. ldr r3, =_edata
  49. adds r2, r0, r1
  50. cmp r2, r3
  51. bcc CopyDataInit
  52. ldr r2, =_sbss
  53. b LoopFillZerobss
  54. /* Zero fill the bss segment. */
  55. FillZerobss:
  56. movs r3, #0
  57.   str  r3, [r2]
  58. adds r2, r2, #4
  59. LoopFillZerobss:
  60. ldr r3, = _ebss
  61. cmp r2, r3
  62. bcc FillZerobss
  63. /* Call the clock system intitialization function.*/
  64.     bl  SystemInit
  65. /* Call static constructors */
  66.     bl __libc_init_array
  67. /* Call the application's entry point.*/
  68. bl main
  69. LoopForever:
  70.     b LoopForever
  71. .size Reset_Handler, .-Reset_Handler
  72. /**
  73. * @brief  This is the code that gets called when the processor receives an
  74. *         unexpected interrupt.  This simply enters an infinite loop, preserving
  75. *         the system state for examination by a debugger.
  76. *
  77. * @param  None
  78. * @retval : None
  79. */
  80.     .section .text.Default_Handler,"ax",%progbits
  81. Default_Handler:
  82. Infinite_Loop:
  83. b Infinite_Loop
  84. .size Default_Handler, .-Default_Handler
  85. /******************************************************************************
  86. *
  87. * The minimal vector table for a Cortex-M.  Note that the proper constructs
  88. * must be placed on this to ensure that it ends up at physical address
  89. * 0x0000.0000.
  90. *
  91. ******************************************************************************/
  92.   .section .isr_vector,"a",%progbits
  93. .type g_pfnVectors, %object
  94. .size g_pfnVectors, .-g_pfnVectors
  95. g_pfnVectors:
  96. .word _estack
  97. .word Reset_Handler
  98. .word NMI_Handler
  99. .word HardFault_Handler
  100. .word MemManage_Handler
  101. .word BusFault_Handler
  102. .word UsageFault_Handler
  103. .word 0
  104. .word 0
  105. .word 0
  106. .word 0
  107. .word SVC_Handler
  108. .word DebugMon_Handler
  109. .word 0
  110. .word PendSV_Handler
  111. .word SysTick_Handler
  112. .word WWDG_IRQHandler                   /* Window WatchDog */
  113. .word PVD_IRQHandler                    /* PVD through EXTI Line detection */
  114. .word TAMP_STAMP_IRQHandler             /* Tamper and TimeStamps through the EXTI line */
  115. .word RTC_WKUP_IRQHandler               /* RTC Wakeup through the EXTI line */
  116. .word FLASH_IRQHandler                  /* FLASH */
  117. .word RCC_IRQHandler                    /* RCC */
  118. .word EXTI0_IRQHandler                  /* EXTI Line0 */
  119. .word EXTI1_IRQHandler                  /* EXTI Line1 */
  120. .word EXTI2_IRQHandler                  /* EXTI Line2 */
  121. .word EXTI3_IRQHandler                  /* EXTI Line3 */
  122. .word EXTI4_IRQHandler                  /* EXTI Line4 */
  123. .word DMA1_Stream0_IRQHandler           /* DMA1 Stream 0 */
  124. .word DMA1_Stream1_IRQHandler           /* DMA1 Stream 1 */
  125. .word DMA1_Stream2_IRQHandler           /* DMA1 Stream 2 */
  126. .word DMA1_Stream3_IRQHandler           /* DMA1 Stream 3 */
  127. .word DMA1_Stream4_IRQHandler           /* DMA1 Stream 4 */
  128. .word DMA1_Stream5_IRQHandler           /* DMA1 Stream 5 */
  129. .word DMA1_Stream6_IRQHandler           /* DMA1 Stream 6 */
  130. .word ADC_IRQHandler                    /* ADC1, ADC2 and ADC3s */
  131. .word CAN1_TX_IRQHandler                /* CAN1 TX */
  132. .word CAN1_RX0_IRQHandler               /* CAN1 RX0 */
  133. .word CAN1_RX1_IRQHandler               /* CAN1 RX1 */
  134. .word CAN1_SCE_IRQHandler               /* CAN1 SCE */
  135. .word EXTI9_5_IRQHandler                /* External Line[9:5]s */
  136. .word TIM1_BRK_TIM9_IRQHandler          /* TIM1 Break and TIM9 */
  137. .word TIM1_UP_TIM10_IRQHandler          /* TIM1 Update and TIM10 */
  138. .word TIM1_TRG_COM_TIM11_IRQHandler     /* TIM1 Trigger and Commutation and TIM11 */
  139. .word TIM1_CC_IRQHandler                /* TIM1 Capture Compare */
  140. .word TIM2_IRQHandler                   /* TIM2 */
  141. .word TIM3_IRQHandler                   /* TIM3 */
  142. .word TIM4_IRQHandler                   /* TIM4 */
  143. .word I2C1_EV_IRQHandler                /* I2C1 Event */
  144. .word I2C1_ER_IRQHandler                /* I2C1 Error */
  145. .word I2C2_EV_IRQHandler                /* I2C2 Event */
  146. .word I2C2_ER_IRQHandler                /* I2C2 Error */
  147. .word SPI1_IRQHandler                   /* SPI1 */
  148. .word SPI2_IRQHandler                   /* SPI2 */
  149. .word USART1_IRQHandler                 /* USART1 */
  150. .word USART2_IRQHandler                 /* USART2 */
  151. .word USART3_IRQHandler                 /* USART3 */
  152. .word EXTI15_10_IRQHandler              /* External Line[15:10]s */
  153. .word RTC_Alarm_IRQHandler              /* RTC Alarm (A and B) through EXTI Line */
  154. .word OTG_FS_WKUP_IRQHandler            /* USB OTG FS Wakeup through EXTI line */
  155. .word TIM8_BRK_TIM12_IRQHandler         /* TIM8 Break and TIM12 */
  156. .word TIM8_UP_TIM13_IRQHandler          /* TIM8 Update and TIM13 */
  157. .word TIM8_TRG_COM_TIM14_IRQHandler     /* TIM8 Trigger and Commutation and TIM14 */
  158. .word TIM8_CC_IRQHandler                /* TIM8 Capture Compare */
  159. .word DMA1_Stream7_IRQHandler           /* DMA1 Stream7 */
  160. .word FSMC_IRQHandler                   /* FSMC */
  161. .word SDIO_IRQHandler                   /* SDIO */
  162. .word TIM5_IRQHandler                   /* TIM5 */
  163. .word SPI3_IRQHandler                   /* SPI3 */
  164. .word UART4_IRQHandler                  /* UART4 */
  165. .word UART5_IRQHandler                  /* UART5 */
  166. .word TIM6_DAC_IRQHandler               /* TIM6 and DAC1&2 underrun errors */
  167. .word TIM7_IRQHandler                   /* TIM7 */
  168. .word DMA2_Stream0_IRQHandler           /* DMA2 Stream 0 */
  169. .word DMA2_Stream1_IRQHandler           /* DMA2 Stream 1 */
  170. .word DMA2_Stream2_IRQHandler           /* DMA2 Stream 2 */
  171. .word DMA2_Stream3_IRQHandler           /* DMA2 Stream 3 */
  172. .word DMA2_Stream4_IRQHandler           /* DMA2 Stream 4 */
  173. .word ETH_IRQHandler                    /* Ethernet */
  174. .word ETH_WKUP_IRQHandler               /* Ethernet Wakeup through EXTI line */
  175. .word CAN2_TX_IRQHandler                /* CAN2 TX */
  176. .word CAN2_RX0_IRQHandler               /* CAN2 RX0 */
  177. .word CAN2_RX1_IRQHandler               /* CAN2 RX1 */
  178. .word CAN2_SCE_IRQHandler               /* CAN2 SCE */
  179. .word OTG_FS_IRQHandler                 /* USB OTG FS */
  180. .word DMA2_Stream5_IRQHandler           /* DMA2 Stream 5 */
  181. .word DMA2_Stream6_IRQHandler           /* DMA2 Stream 6 */
  182. .word DMA2_Stream7_IRQHandler           /* DMA2 Stream 7 */
  183. .word USART6_IRQHandler                 /* USART6 */
  184. .word I2C3_EV_IRQHandler                /* I2C3 event */
  185. .word I2C3_ER_IRQHandler                /* I2C3 error */
  186. .word OTG_HS_EP1_OUT_IRQHandler         /* USB OTG HS End Point 1 Out */
  187. .word OTG_HS_EP1_IN_IRQHandler          /* USB OTG HS End Point 1 In */
  188. .word OTG_HS_WKUP_IRQHandler            /* USB OTG HS Wakeup through EXTI */
  189. .word OTG_HS_IRQHandler                 /* USB OTG HS */
  190. .word DCMI_IRQHandler                   /* DCMI */
  191. .word CRYP_IRQHandler                   /* CRYP crypto */
  192. .word HASH_RNG_IRQHandler               /* Hash and Rng */
  193. .word FPU_IRQHandler                    /* FPU */
  194. /*******************************************************************************
  195. *
  196. * Provide weak aliases for each Exception handler to the Default_Handler.
  197. * As they are weak aliases, any function with the same name will override
  198. * this definition.
  199. *
  200. *******************************************************************************/
  201.    .weak NMI_Handler
  202. .thumb_set NMI_Handler,Default_Handler
  203.    .weak HardFault_Handler
  204. .thumb_set HardFault_Handler,Default_Handler
  205.    .weak MemManage_Handler
  206. .thumb_set MemManage_Handler,Default_Handler
  207.    .weak BusFault_Handler
  208. .thumb_set BusFault_Handler,Default_Handler
  209. .weak UsageFault_Handler
  210. .thumb_set UsageFault_Handler,Default_Handler
  211. .weak SVC_Handler
  212. .thumb_set SVC_Handler,Default_Handler
  213. .weak DebugMon_Handler
  214. .thumb_set DebugMon_Handler,Default_Handler
  215. .weak PendSV_Handler
  216. .thumb_set PendSV_Handler,Default_Handler
  217. .weak SysTick_Handler
  218. .thumb_set SysTick_Handler,Default_Handler
  219. .weak SystemInit
  220. .weak WWDG_IRQHandler
  221. .thumb_set WWDG_IRQHandler,Default_Handler
  222. .weak PVD_IRQHandler
  223. .thumb_set PVD_IRQHandler,Default_Handler
  224. .weak TAMP_STAMP_IRQHandler
  225. .thumb_set TAMP_STAMP_IRQHandler,Default_Handler
  226. .weak RTC_WKUP_IRQHandler
  227. .thumb_set RTC_WKUP_IRQHandler,Default_Handler
  228. .weak FLASH_IRQHandler
  229. .thumb_set FLASH_IRQHandler,Default_Handler
  230. .weak RCC_IRQHandler
  231. .thumb_set RCC_IRQHandler,Default_Handler
  232. .weak EXTI0_IRQHandler
  233. .thumb_set EXTI0_IRQHandler,Default_Handler
  234. .weak EXTI1_IRQHandler
  235. .thumb_set EXTI1_IRQHandler,Default_Handler
  236. .weak EXTI2_IRQHandler
  237. .thumb_set EXTI2_IRQHandler,Default_Handler
  238. .weak EXTI3_IRQHandler
  239. .thumb_set EXTI3_IRQHandler,Default_Handler
  240. .weak EXTI4_IRQHandler
  241. .thumb_set EXTI4_IRQHandler,Default_Handler
  242. .weak DMA1_Stream0_IRQHandler
  243. .thumb_set DMA1_Stream0_IRQHandler,Default_Handler
  244. .weak DMA1_Stream1_IRQHandler
  245. .thumb_set DMA1_Stream1_IRQHandler,Default_Handler
  246. .weak DMA1_Stream2_IRQHandler
  247. .thumb_set DMA1_Stream2_IRQHandler,Default_Handler
  248. .weak DMA1_Stream3_IRQHandler
  249. .thumb_set DMA1_Stream3_IRQHandler,Default_Handler
  250. .weak DMA1_Stream4_IRQHandler
  251. .thumb_set DMA1_Stream4_IRQHandler,Default_Handler
  252. .weak DMA1_Stream5_IRQHandler
  253. .thumb_set DMA1_Stream5_IRQHandler,Default_Handler
  254. .weak DMA1_Stream6_IRQHandler
  255. .thumb_set DMA1_Stream6_IRQHandler,Default_Handler
  256. .weak ADC_IRQHandler
  257. .thumb_set ADC_IRQHandler,Default_Handler
  258. .weak CAN1_TX_IRQHandler
  259. .thumb_set CAN1_TX_IRQHandler,Default_Handler
  260. .weak CAN1_RX0_IRQHandler
  261. .thumb_set CAN1_RX0_IRQHandler,Default_Handler
  262. .weak CAN1_RX1_IRQHandler
  263. .thumb_set CAN1_RX1_IRQHandler,Default_Handler
  264. .weak CAN1_SCE_IRQHandler
  265. .thumb_set CAN1_SCE_IRQHandler,Default_Handler
  266. .weak EXTI9_5_IRQHandler
  267. .thumb_set EXTI9_5_IRQHandler,Default_Handler
  268. .weak TIM1_BRK_TIM9_IRQHandler
  269. .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
  270. .weak TIM1_UP_TIM10_IRQHandler
  271. .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
  272. .weak TIM1_TRG_COM_TIM11_IRQHandler
  273. .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler
  274. .weak TIM1_CC_IRQHandler
  275. .thumb_set TIM1_CC_IRQHandler,Default_Handler
  276. .weak TIM2_IRQHandler
  277. .thumb_set TIM2_IRQHandler,Default_Handler
  278. .weak TIM3_IRQHandler
  279. .thumb_set TIM3_IRQHandler,Default_Handler
  280. .weak TIM4_IRQHandler
  281. .thumb_set TIM4_IRQHandler,Default_Handler
  282. .weak I2C1_EV_IRQHandler
  283. .thumb_set I2C1_EV_IRQHandler,Default_Handler
  284. .weak I2C1_ER_IRQHandler
  285. .thumb_set I2C1_ER_IRQHandler,Default_Handler
  286. .weak I2C2_EV_IRQHandler
  287. .thumb_set I2C2_EV_IRQHandler,Default_Handler
  288. .weak I2C2_ER_IRQHandler
  289. .thumb_set I2C2_ER_IRQHandler,Default_Handler
  290. .weak SPI1_IRQHandler
  291. .thumb_set SPI1_IRQHandler,Default_Handler
  292. .weak SPI2_IRQHandler
  293. .thumb_set SPI2_IRQHandler,Default_Handler
  294. .weak USART1_IRQHandler
  295. .thumb_set USART1_IRQHandler,Default_Handler
  296. .weak USART2_IRQHandler
  297. .thumb_set USART2_IRQHandler,Default_Handler
  298. .weak USART3_IRQHandler
  299. .thumb_set USART3_IRQHandler,Default_Handler
  300. .weak EXTI15_10_IRQHandler
  301. .thumb_set EXTI15_10_IRQHandler,Default_Handler
  302. .weak RTC_Alarm_IRQHandler
  303. .thumb_set RTC_Alarm_IRQHandler,Default_Handler
  304. .weak OTG_FS_WKUP_IRQHandler
  305. .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
  306. .weak TIM8_BRK_TIM12_IRQHandler
  307. .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler
  308. .weak TIM8_UP_TIM13_IRQHandler
  309. .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler
  310. .weak TIM8_TRG_COM_TIM14_IRQHandler
  311. .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler
  312. .weak TIM8_CC_IRQHandler
  313. .thumb_set TIM8_CC_IRQHandler,Default_Handler
  314. .weak DMA1_Stream7_IRQHandler
  315. .thumb_set DMA1_Stream7_IRQHandler,Default_Handler
  316. .weak FSMC_IRQHandler
  317. .thumb_set FSMC_IRQHandler,Default_Handler
  318. .weak SDIO_IRQHandler
  319. .thumb_set SDIO_IRQHandler,Default_Handler
  320. .weak TIM5_IRQHandler
  321. .thumb_set TIM5_IRQHandler,Default_Handler
  322. .weak SPI3_IRQHandler
  323. .thumb_set SPI3_IRQHandler,Default_Handler
  324. .weak UART4_IRQHandler
  325. .thumb_set UART4_IRQHandler,Default_Handler
  326. .weak UART5_IRQHandler
  327. .thumb_set UART5_IRQHandler,Default_Handler
  328. .weak TIM6_DAC_IRQHandler
  329. .thumb_set TIM6_DAC_IRQHandler,Default_Handler
  330. .weak TIM7_IRQHandler
  331. .thumb_set TIM7_IRQHandler,Default_Handler
  332. .weak DMA2_Stream0_IRQHandler
  333. .thumb_set DMA2_Stream0_IRQHandler,Default_Handler
  334. .weak DMA2_Stream1_IRQHandler
  335. .thumb_set DMA2_Stream1_IRQHandler,Default_Handler
  336. .weak DMA2_Stream2_IRQHandler
  337. .thumb_set DMA2_Stream2_IRQHandler,Default_Handler
  338. .weak DMA2_Stream3_IRQHandler
  339. .thumb_set DMA2_Stream3_IRQHandler,Default_Handler
  340. .weak DMA2_Stream4_IRQHandler
  341. .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
  342. .weak ETH_IRQHandler
  343. .thumb_set ETH_IRQHandler,Default_Handler
  344. .weak ETH_WKUP_IRQHandler
  345. .thumb_set ETH_WKUP_IRQHandler,Default_Handler
  346. .weak CAN2_TX_IRQHandler
  347. .thumb_set CAN2_TX_IRQHandler,Default_Handler
  348. .weak CAN2_RX0_IRQHandler
  349. .thumb_set CAN2_RX0_IRQHandler,Default_Handler
  350. .weak CAN2_RX1_IRQHandler
  351. .thumb_set CAN2_RX1_IRQHandler,Default_Handler
  352. .weak CAN2_SCE_IRQHandler
  353. .thumb_set CAN2_SCE_IRQHandler,Default_Handler
  354. .weak OTG_FS_IRQHandler
  355. .thumb_set OTG_FS_IRQHandler,Default_Handler
  356. .weak DMA2_Stream5_IRQHandler
  357. .thumb_set DMA2_Stream5_IRQHandler,Default_Handler
  358. .weak DMA2_Stream6_IRQHandler
  359. .thumb_set DMA2_Stream6_IRQHandler,Default_Handler
  360. .weak DMA2_Stream7_IRQHandler
  361. .thumb_set DMA2_Stream7_IRQHandler,Default_Handler
  362. .weak USART6_IRQHandler
  363. .thumb_set USART6_IRQHandler,Default_Handler
  364. .weak I2C3_EV_IRQHandler
  365. .thumb_set I2C3_EV_IRQHandler,Default_Handler
  366. .weak I2C3_ER_IRQHandler
  367. .thumb_set I2C3_ER_IRQHandler,Default_Handler
  368. .weak OTG_HS_EP1_OUT_IRQHandler
  369. .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler
  370. .weak OTG_HS_EP1_IN_IRQHandler
  371. .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler
  372. .weak OTG_HS_WKUP_IRQHandler
  373. .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler
  374. .weak OTG_HS_IRQHandler
  375. .thumb_set OTG_HS_IRQHandler,Default_Handler
  376. .weak DCMI_IRQHandler
  377. .thumb_set DCMI_IRQHandler,Default_Handler
  378. .weak CRYP_IRQHandler
  379. .thumb_set CRYP_IRQHandler,Default_Handler
  380. .weak HASH_RNG_IRQHandler
  381. .thumb_set HASH_RNG_IRQHandler,Default_Handler
  382. .weak FPU_IRQHandler
  383. .thumb_set FPU_IRQHandler,Default_Handler
  384. /************************ (C) COPYRIGHT Ac6 *****END OF FILE****/
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:119518 发表于 2016-5-9 15:21 | 只看该作者
启动调试始终要失败!不知道什么原因!
回复

使用道具 举报

板凳
ID:141329 发表于 2016-10-4 23:45 | 只看该作者
你好,可以把你的工程文件共享一下吗?我按照你的方法在misc.h这个文件的头文件有问题,而且你的系统和XP,和我们的系统不一样,我是自己建工程来搞的,就是把依赖的文件复制到相应的文件下而且,然后refresh搞的,谢谢
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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