基于STM32的流水线产品计数与分拣系统 | 保姆式教程 开源可复刻

张开发
2026/4/17 3:56:26 15 分钟阅读

分享文章

基于STM32的流水线产品计数与分拣系统 | 保姆式教程 开源可复刻
流水线产品计数与分拣是工业自动化、产线升级、电赛控制类题目的核心典型场景,传统新手项目大多只实现基础的计数功能,存在传感器误触发、计数重复/漏检、分拣动作与传送带不同步、多模块整合逻辑混乱等核心痛点,新手开发时极易遇到计数不准、分拣失败、系统抗干扰能力差等问题。本项目基于STM32F103C8T6主控,打造一套集光电精准计数、颜色物料识别、传送带速度闭环控制、同步分拣执行、参数可视化配置、产线数据上传于一体的流水线产品计数与分拣系统,全程采用STM32CubeMX+HAL库开发,配套逐行注释可直接编译的开源代码、全流程无跳步保姆式实操,新手跟着步骤一步步操作,就能顺利完成项目复刻。本项目硬件参考总成本约85元,适配有STM32基础的嵌入式开发者、工业自动化原型开发、电赛备赛实战场景,完美覆盖STM32 HAL库开发、多模块整合、时序同步控制、工程化开发思维训练的核心需求。目录一、项目整体介绍1.1 项目背景与意义1.2 项目核心功能1.3 项目难度与适配说明1.4 项目硬件成本说明1.5 适配人群与前置知识要求二、硬件选型与采购指南2.1 核心控制器选型2.2 完整硬件BOM清单2.3 硬件采购避坑指南三、硬件接线保姆式指南3.1 硬件接线表3.2 接线步骤分步讲解3.3 接线完成自检方法(上电前必做)3.4 硬件接线避坑指南四、代码全流程保姆式讲解4.1 开发环境与工程创建全流程4.2 代码整体架构与模块化设计4.3 核心代码逐行讲解4.4 单模块验证代码4.5 完整工程主函数代码4.6 代码自定义修改指南五、调试排坑万能指南5.1 分场景全流程排查逻辑5.2 高频问题排查表5.3 新手最容易踩的致命坑及解决方案5.4 【博主真实踩坑实录】六、功能演示与验证6.1 核心功能分步测试步骤6.2 功能验证标准七、核心要点速记八、小结一、项目整体介绍1.1 项目背景与意义在工业自动化产线中,产品计数与分拣是生产流程的核心环节,直接决定了产线的效率与良品率;同时,流水线计数分拣类题目也是电赛省赛控制类方向的高频考点,重点考察开发者的多外设整合、时序同步控制、闭环调节、抗干扰设计能力。传统新手开发的同类项目,大多只实现了基础的光电计数和简单舵机动作,缺乏速度闭环、防重复计数、分拣时序同步、抗干扰设计,在实际运行中极易出现计数不准、分拣失败、系统不稳定等问题。本项目从工业实际需求与电赛备赛场景出发,完整实现了从物料检测、计数、识别、分拣、数据上传的全流程闭环控制,不仅能让新手掌握STM32多外设整合开发、时序同步控制、PID算法落地的核心逻辑,还能建立工业自动化项目的工程化开发思维,是从STM32基础外设入门到综合控制项目开发的核心进阶项目。1.2 项目核心功能传送带速度闭环控制功能:采用42步进电机驱动传送带,配合编码器实现速度闭环控制,支持0-50cm/s速度无级调节,速度稳定无波动,保证计数与分拣的时序同步性;产品精准计数与防重复检测功能:采用对射式光电传感器实现产品计数,加入硬件滤波+软件防抖算法,支持防重复计数、漏检补全,计数精度100%,支持累计计数、批次计数清零功能;物料识别与分拣功能:采用TCS3200颜色传感器识别物料颜色属性,支持3种以上物料分类,通过舵机执行分拣动作,分拣时序与传送带速度自动匹配,分拣准确率≥99%;人机交互与参数配置功能:0.96寸OLED屏实时显示累计计数、批次计数、传送带速度、物料种类、分拣状态,支持4个按键完成速度调节、计数清零、分拣阈值设置、启停控制操作;产线数据上传与异常报警功能:USART串口实时上传产线计数、分拣数据到上位机,支持物料缺料、传感器故障、分拣异常报警提示,适配工业产线监控需求。1.3 项目难度与适配说明难度等级:进阶级(STM32 HAL库裸机开发)知识覆盖范围:STM32 GPIO输入输出配置、定时器PWM输出、定时器编码器模式、定时器输入捕获、外部中断、I2C通信、USART串口通信、步进电机驱动、颜色传感器驱动、增量式PID算法、时序同步控制、防抖防误触算法适配学习阶段:完成STM32基础外设学习,想要进阶多模块整合、工业时序控制项目开发的开发者,完美适配STM32 HAL库开发实战、电赛省赛控制类题目备赛、工业自动化原型开发场景实操落地性:所有硬件均为通用直插模块,杜邦线即可完成所有接线,无需复杂焊接,代码可直接编译运行,新手可1:1复刻,完成后可直接用于电赛项目、工业产线原型、自动化设备开发。1.4 项目硬件成本说明本项目整体参考总成本约85元,提供3个分级预算方案,适配不同用户的学习与落地需求:预算方案参考总成本适配场景核心配置说明极简版40元纯学习复刻、功能验证STM32核心板+红外对射计数模块+SG90舵机+OLED屏,仅保留基础计数+单物料分拣功能,无传送带、速度闭环、颜色识别推荐版85元完整功能复刻、工业场景原型全功能BOM配置,含42步进电机传送带、TB6600驱动器、对射式光电传感器、TCS3200颜色传感器、SG90舵机、OLED屏、按键、电源,实现全部核心功能进阶版180元功能扩展、电赛备赛优化推荐版基础上,新增金属物料检测传感器、2路分拣气缸、485通信、WiFi远传模块、触摸屏,支持多物料分类、工业总线通信、远程监控1.5 适配人群与前置知识要求适配人群完成STM32基础外设学习,想要进阶多模块整合项目开发的嵌入式学习者想要开发工业自动化原型、产线分拣设备的嵌入式开发者备赛电赛,需要打磨控制类项目核心逻辑的参赛人员想要掌握时序同步控制、PID算法落地、抗干扰设计的嵌入式工程师前置知识要求【前置知识回顾】GPIO输入输出配置的前置知识可回顾我的《STM32入门保姆式教程》第2章,老粉可以直接跳过;定时器PWM输出与编码器模式的前置知识可回顾我的《STM32入门保姆式教程》第3章;外部中断配置的前置知识可回顾我的《STM32入门保姆式教程》第3章;I2C通信与OLED屏驱动的前置知识可回顾我的《STM32入门保姆式教程》第5章;USART串口通信的前置知识可回顾我的《STM32入门保姆式教程》第3章;C语言基础语法、结构体、函数封装的相关知识,可回顾我的《C语言保姆式学习笔记》全系列内容。二、硬件选型与采购指南2.1 核心控制器选型本项目核心控制器选用STM32F103C8T6核心板(最小系统板),和同类型号相比,核心优势与项目适配性如下:定时器资源完全适配项目需求:内置4个通用定时器、2个高级定时器,支持PWM输出、编码器接口模式、输入捕获、外部中断,完全满足传送带步进电机驱动、编码器测速、光电计数中断、舵机PWM控制、颜色传感器频率采集的所有需求,无需额外扩展芯片;外设资源充足:拥有3路USART、2路I2C、2个12位ADC,完全满足本项目人机交互、串口上传、传感器数据采集的所有需求,预留充足的多分拣口、多传感器扩展空间;性价比极高:核心板参考单价仅15元左右,是STM32控制类项目开发、电赛备赛的主流型号,资料丰富、生态完善,新手遇到问题可快速找到解决方案;开发兼容性强:完美适配STM32CubeMX图形化配置工具,HAL库固件包完善,代码可无缝移植到STM32F103其他型号、GD32同系列型号,方便后续多轴扩展、功能升级;工业级稳定性:工业级工作温度范围(-40℃~85℃),抗干扰能力强,可适配工业产线复杂的电磁环境,满足7*24小时稳定运行的需求。2.2 完整硬件BOM清单序号元器件名称型号规格数量核心功能参考单价(元)缺货替代型号备注1核心控制器STM32F103C8T6最小系统板1核心控制、时序逻辑、传感器数据处理、外设驱动15.0GD32F103C8T6、STM32F103RCT6建议选用带Type-C接口、自动下载电路的版本,新手下载程序更方便2步进电机42步进电机 1.8° 0.4N·m1驱动传送带运转,提供流水线动力18.035步进电机两相四线,适配TB6600驱动器,扭矩适配小型传送带3步进电机驱动器TB6600 光电隔离型1放大控制信号,驱动步进电机,细分控制22.0A4988、DRV8825必须选用带光电隔离的版本,隔离产线强电干扰,避免串入MCU4增量式编码器AB相 600线 光电编码器1实时采集传送带转速,实现速度闭环控制10.0360线/1000线编码器与步进电机轴同心安装,测速精准,抗干扰能力强5对射式光电传感器E18-D80NK 红外对射1产品检测、计数触发,NPN常开输出5.0槽型光耦传感器检测距离可调,抗环境光干扰能力强,适配产线场景6颜色传感器TCS3200 颜色识别模块1识别物料颜色属性,实现分类分拣6.0TCS230带白光补光灯、红外滤光片,识别精准,受环境光影响小7舵机SG90 9g 180°舵机1分拣执行机构,推动物料到对应料道3.0MG90S金属齿舵机扭矩足够推动小型物料,响应速度快,适配分拣场景8OLED显示屏0.96寸 I2C接口 128*641实时显示计数、速度、分拣状态、配置参数7.01.3寸 I2C OLED屏必须选用I2C接口,仅需2根信号线,节省GPIO资源,驱动代码通用9轻触按键4脚直插轻触按键 12*12mm4参数调节、计数清零、启停控制、模式切换0.5/个贴片按键建议搭配按键帽,提升操作手感10直流电源24V 2A 直流稳压电源1步进电机与驱动器供电8.012V 3A直流电源建议选用线性稳压电源,纹波小,抗干扰能力强11杜邦线40P 公对母/公对公1扎所有模块接线、信号回路连接3.0单根杜邦线公对母用于核心板接模块,公对公用于模块间共地接线12面包板400孔面包板1控制回路接线、原型搭建2.0830孔面包板无需焊接,新手可快速搭建电路,方便修改调试13滤波电容104瓷片电容 0.1uF10传感器信号滤波、电源滤波,降低电磁干扰0.1/个独石电容提升传感器信号稳定性,减少误触发合计----参考总成本84.5元-推荐版完整配置,不含传送带机械结构、扩展模块2.3 硬件采购避坑指南核心控制器避坑:不要购买拆机片、翻新片的STM32核心板,这类芯片大概率存在定时器通道损坏、外部中断异常的问题,会导致计数不准、PWM输出异常,优先选择正规元器件商城、电商通用平台的全新原装芯片核心板;光电传感器避坑:新手最容易在这里翻车,很多新手购买的漫反射式光电传感器,受环境光、物料颜色影响大,极易出现误触发、漏检,优先选择对射式光电传感器,检测稳定,抗干扰能力强,不受物料颜色、环境光变化的影响;颜色传感器避坑:不要购买无补光灯、无红外滤光片的劣质TCS3200模块,环境光变化会导致颜色识别完全失准,必须选择带白光补光灯、红外滤光片的模块,同时优先选择出厂校准过的模块,减少新手的校准难度;舵机采购避坑:不要购买劣质塑料齿舵机,长期分拣动作会导致齿轮磨损、扫齿,出现分拣不到位的问题,优先选择金属齿舵机,扭矩≥1.5kg·cm,保证分拣动作稳定、使用寿命长;缺货替代避坑:替代步进电机驱动器时,必须确认控制电平兼容3.3V,很多老款驱动器只支持5V电平,需要额外加电平转换电路,否则无法识别脉冲信号;替代光电传感器时,必须确认输出模式为NPN常开,与代码逻辑匹配,避免触发逻辑相反。三、硬件接线保姆式指南⚠️【安全警示】本项目涉及24V直流动力回路,接线时必须完全断开所有电源,严禁带电接线!传送带机械结构运行时,严禁将手、异物伸入传送带,避免夹伤!分拣机构动作时,必须做好防护,避免舵机动作伤人!接线前必须反复确认电源正负极,严禁反接,否则会直接烧坏元器件!3.1 硬件接线表STM32控制器引脚外设/模块引脚功能说明杜邦线颜色建议5VOLED屏VCC、按键、光电传感器VCC、颜色传感器VCC、舵机VCC控制模块5V电源供电红色3.3VSTM32核心板电源、编码器上拉电阻核心板3.3V参考电源橙色GND所有控制模块GND、驱动器信号地GND、编码器GND、传感器GND控制回路全系统共地黑色PA0 (TIM2_CH1)编码器 A相引脚编码器A相脉冲输入,定时器编码器模式,传送带测速蓝色PA1 (TIM2_CH2)编码器 B相引脚编码器B相脉冲输入,定时器编码器模式,传送带测速绿色PA2 (TIM2_CH3)驱动器 PUL+ 脉冲引脚步进电机脉冲输出,定时器PWM模式,传送带速度控制黄色PA3驱动器 DIR+ 方向引脚电机正反转控制,推挽输出白色PA4驱动器 ENA+ 使能引脚电机使能/关闭控制,推挽输出灰色PA5 (TIM2_CH1)舵机 PWM 引脚舵机角度控制,定时器50Hz PWM输出棕色PB0 (EXTI0)光电传感器 OUT 引脚产品计数触发,外部中断下降沿触发紫色PB1TCS3200 S0 引脚颜色传感器输出频率缩放控制,推挽输出橙色PB2TCS3200 S1 引脚颜色传感器输出频率缩放控制,推挽输出红色PB10TCS3200 S2 引脚颜色传感器滤波颜色选择,推挽输出蓝色PB11TCS3200 S3 引脚颜色传感器滤波颜色选择,推挽输出绿色PB12 (TIM4_CH1)TCS3200 OUT 引脚颜色传感器频率采集,定时器输入捕获黄色PB6 (I2C1_SCL)OLED屏 SCL引脚I2C通信时钟线白色PB7 (I2C1_SDA)OLED屏 SDA引脚I2C通信数据线灰色PB3按键1 引脚参数加/速度加,下拉输入紫色PB4按键2 引脚参数减/速度减,下拉输入棕色PB5按键3 引脚确认/计数清零,下拉输入橙色PB8按键4 引脚启停/模式切换,下拉输入红色PA9 (USART1_TX)CH340模块 RX引脚串口发送,产线数据上传到上位机黄色PA10 (USART1_RX)CH340模块 TX引脚串口接收,上位机参数下发绿色24V电源正极驱动器 VM 引脚驱动器与步进电机24V电源正极红色粗线24V电源负极驱动器 GND 引脚驱动器与步进电机24V电源负极黑色粗线驱动器 A+ 引脚步进电机 A+ 相线电机A相绕组正极蓝色粗线驱动器 A- 引脚步进电机 A- 相线电机A相绕组负极蓝色粗线驱动器 B+ 引脚步进电机 B+ 相线电机B相绕组正极绿色粗线驱动器 B- 引脚步进电机 B- 相线电机B相绕组负极绿色粗线驱动器 PUL- 引脚控制回路GND脉冲信号负极,共地黑色驱动器 DIR- 引脚控制回路GND方向信号负极,共地黑色驱动器 ENA- 引脚控制回路GND使能信号负极,共地黑色⚠️【补充说明】光电传感器OUT引脚与GND之间必须并联104瓷片电容,滤除高频干扰;编码器A、B相引脚与GND之间必须并联104瓷片电容,提升测速稳定性;NPN输出的传感器,MCU引脚需配置为上拉输入,保证电平触发正常。3.2 接线步骤分步讲解老粉都知道,我做所有工业控制项目都坚持先接控制回路、再接动力回路,先完成单模块接线、再做整机整合,新手跟着这个步骤操作,能最大程度避免接错线烧坏器件的问题。第一步:核心板基础接线先将STM32核心板固定在面包板上,接入5V电源与GND,确认核心板电源指示灯正常亮起,下载口、复位按键功能正常,用万用表测量3.3V引脚输出电压正常,这一步是所有操作的基础,核心板供电不正常,后续所有功能都无法实现。第二步:人机交互模块接线按照接线表,先接OLED屏的I2C引脚(PB6/PB7)、5V与GND,再接4个功能按键的引脚(PB3/PB4/PB5/PB8)与GND,每接完一个模块,就用万用表通断档检测引脚是否接对、有无短路,避免后续排查困难;同时在每个按键引脚与GND之间并联104滤波电容,消除按键抖动。第三步:传感器模块接线按照接线表,先接光电计数传感器,OUT引脚接PB0,VCC接5V,GND接GND,OUT与GND之间并联104滤波电容;再接TCS3200颜色传感器,对应引脚接PB1/PB2/PB10/PB11/PB12,VCC接5V,GND接GND;最后接编码器,A、B相接PA0/PA1,VCC接5V,GND接GND,并联104滤波电容。第四步:执行机构控制回路接线按照接线表,将步进电机驱动器的PUL+、DIR+、ENA+分别接PA2、PA3、PA4,PUL-、DIR-、ENA-统一接控制回路GND;再接舵机的PWM引脚到PA5,VCC接5V,GND接GND;⚠️这一步仅接低压控制回路,严禁接入24V动力电源,避免接线错误烧坏驱动器。第五步:控制回路全流程自检所有控制模块接线完成后,用万用表通断档检测所有模块的VCC与GND之间无短路,核心板引脚无错接、虚接,确认无误后,给控制回路通电,观察所有模块的电源指示灯正常亮起,无冒烟、发烫、异味等异常情况。第六步:动力回路接线(仅控制回路调试完成后操作)�️【绝对安全红线】操作前必须完全断开24V电源,用万用表确认电源回路完全断电,无任何电压!将24V电源的正负极分别接入驱动器的VM、GND引脚,将步进电机的4根相线按照电机规格书,分别接入驱动器的A+、A-、B+、B-引脚,严禁相线接混、接反;所有接线完成后,用万用表检测动力回路与控制回路之间的电阻,必须大于1MΩ,完全绝缘,无任何导通情况,所有裸露的金属端子用绝缘胶带包裹。3.3 接线完成自检方法(上电前必做)无论新手还是有经验的开发者,上电前的自检都是必须的,这一步能避免90%以上的烧坏器件、短路炸板的问题,跟着以下步骤一步步操作,就能完成全流程自检:通断短路检测:用万用表通断档,检测所有模块的VCC与GND之间,无导通(蜂鸣器不响),如果出现导通,立即排查接线,找到短路点并解决,严禁上电;接线正确性检测:对照接线表,逐根核对每一个引脚的接线,确认无错接、反接、虚接,尤其是电源正负极、电机相线,一旦反接会直接烧坏模块、电机;绝缘检测:用万用表电阻档,检测24V动力回路所有接线端子与3.3V/5V控制回路所有接线端子之间的电阻,必须大于1MΩ,完全绝缘,无任何导通情况,否则严禁上电;驱动器配置检测:核对驱动器的细分设置、电流设置,根据电机额定电流设置驱动器的电流档位,细分设置与代码中的脉冲当量计算匹配,避免速度计算错误;电源匹配检测:核对所有模块的供电电压,确认5V模块接入的是5V电源,24V模块接入的是24V电源,无高压接入低压模块的情况,避免上电烧坏器件。3.4 硬件接线避坑指南共地处理避坑:新手最容易犯的错误,就是驱动器的信号地没有和控制回路GND连接,导致驱动器无法识别MCU发出的脉冲信号,电机不转;或者动力回路的地和控制回路的地直接混接,电机的干扰直接串入MCU,导致计数乱跳、系统死机。这里给大家划个重点,控制回路必须单点共地,驱动器的PUL-、DIR-、ENA-必须统一接到MCU的GND,动力回路的地和控制回路的地只能通过驱动器的光耦隔离,严禁直接短接。光电传感器接线避坑:光电传感器的OUT引脚必须接外部中断引脚,很多新手接成普通GPIO输入,用轮询方式检测,会导致计数漏检,尤其是传送带高速运行时;同时NPN输出的传感器必须配置MCU引脚为上拉输入,否则会导致输出电平异常,无法触发计数中断。颜色传感器接线避坑:TCS3200的OUT引脚必须接定时器输入捕获引脚,很多新手接成普通GPIO,用软件延时测频率,精度极差,颜色识别完全不准;同时传感器的S0、S1引脚必须配置为推挽输出,设置正确的频率缩放系数,否则输出频率过高或过低,无法准确采集。舵机接线避坑:舵机的工作电流较大,必须直接接5V独立电源,严禁从MCU的3.3V引脚供电,否则会导致MCU电源电压被拉低,系统复位、死机;同时舵机的PWM引脚必须接定时器PWM输出通道,否则无法输出精准的50Hz PWM信号,舵机角度控制不准、持续抖动。编码器接线避坑:编码器的A、B相接反,会导致测速方向错误,速度闭环控制时电机失控、震荡;同时编码器信号线必须远离电机动力线,严禁平行走线,否则电磁干扰会导致测速数据乱跳,速度闭环不稳定。四、代码全流程保姆式讲解【合规声明】本代码仅供嵌入式学习与开发参考使用,禁止无修改直接复用提交课程作业/竞赛作品,需根据自身需求进行修改、优化与创新,严格遵守对应场景的学术规范与AI内容使用规则。本内容为教学参考框架,严禁直接AI生成后提交课程作业/竞赛作品,需开发者自主完成硬件调试、代码修改、创新优化。4.1 开发环境与工程创建全流程本项目采用STM32CubeMX+HAL库开发,全程无跳步,新手可跟着操作完成工程创建,所有配置与代码完全匹配,可直接编译无报错。开发环境版本说明(版本不匹配极易导致编译报错)STM32CubeMX版本:6.10.0STM32F1固件包版本:1.8.5Keil MDK版本:5.38编译器版本:ARM Compiler 5CubeMX工程配置分步操作芯片选择:打开STM32CubeMX,点击「ACCESS TO MCU SELECTOR」,在搜索框输入「STM32F103C8T6」,选择对应芯片,点击「Start Project」创建工程。时钟源配置:点击左侧「RCC」选项,High Speed Clock (HSE) 选择「Crystal/Ceramic Resonator」(外部晶振),Low Speed Clock (LSE) 选择「Disable」。时钟树配置:点击顶部「Clock Configuration」,将系统时钟配置为72MHz,具体配置:HSE输入8MHz,PLL倍频选择x9,系统时钟源选择PLL,AHB分频器选择/1,APB1分频器选择/2,APB2分频器选择/1,配置完成后回车,确认所有时钟无红色报错。GPIO引脚配置:回到「Pinout Configuration」界面,按照接线表配置所有GPIO引脚:PA3、PA4、PB1、PB2、PB10、PB11设置为推挽输出,初始低电平;PB3、PB4、PB5、PB8设置为下拉输入。定时器编码器模式配置:点击左侧「TIM2」选项,模式选择「Encoder Mode TI1 and TI2」,对应PA0、PA1引脚,计数极性均为上升沿,自动重装值(ARR)设置为65535,预分频器(PSC)设置为0,开启TIM2更新中断,中断优先级设置为2。定时器PWM输出配置:TIM2 Channel3(PA2)选择「PWM Generation CH3」,预分频器(PSC)71,自动重装值(ARR)999,PWM频率1KHz,用于步进电机脉冲输出;TIM2 Channel1(PA5)选择「PWM Generation CH1」,预分频器(PSC)7199,自动重装值(ARR)199,PWM频率50Hz,用于舵机角度控制。定时器输入捕获配置:点击左侧「TIM4」选项,Channel1(PB12)选择「Input Capture direct mode」,上升沿捕获,预分频器(PSC)71,自动重装值(ARR)65535,开启TIM4更新中断与捕获中断,中断优先级设置为1,用于TCS3200频率采集。定时中断配置:点击左侧「TIM3」选项,时钟源选择「Internal Clock」,预分频器(PSC)71,自动重装值(ARR)999,定时器溢出频率1KHz(1ms),开启TIM3更新中断,中断优先级设置为1,用于PID运算、按键扫描、时序控制。外部中断配置:点击左侧「GPIO」选项,PB0引脚设置为「External Interrupt Mode with Falling edge trigger detection」,下拉模式,开启EXTI0中断,中断优先级设置为2,用于光电计数触发。I2C配置:点击左侧「I2C1」选项,模式选择「I2C」,时钟速度100KHz,地址长度7位,对应PB6(SCL)、PB7(SDA)引脚,用于驱动OLED屏。串口配置:点击左侧「USART1」选项,模式选择「Asynchronous」(异步通信),波特率设置为115200,数据位8位,停止位1位,校验位无,开启USART1全局中断,用于串口数据上传与指令解析。工程管理配置:点击顶部「Project Manager」,设置工程名称、工程保存路径(路径不能有中文、空格),工具链/IDE选择「MDK-ARM V5」,点击左侧「Code Generator」,勾选「Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral」。工程生成:点击右上角「GENERATE CODE」,等待工程生成完成,点击「Open Project」,直接打开Keil MDK工程。4.2 代码整体架构与模块化设计老粉都知道,我做STM32项目一直坚持模块化分文件编程,方便大家移植和修改,本项目完全采用高内聚低耦合的模块化设计,每个外设、每个功能都独立分文件,新手可单独修改、增删功能,无需改动其他模块代码。系统整体架构框图电源模块STM32F103C8T6主控核心指令输入层4路功能按键USART串口上位机传感检测层对射式光电计数传感器TCS3200颜色识别传感器AB相编码器 传送带测速执行输出层TB6600驱动器+42步进电机 传送带驱动

更多文章