8. 课设

📌 本节学习目标
  • 了解课程设计的要求和评分标准
  • 理解单片机系统开发的完整流程
  • 学习综合项目的设计思路
  • 掌握设计报告撰写规范

8.1 课程设计要求

课程设计是本课程的重要环节,占期末成绩 40%。具体要求如下:

  • 以个人或小组为单位,自主选题完成一个 STM32 应用系统
  • 需包含硬件电路设计和软件程序开发
  • 提交完整的课程设计报告
  • 鼓励创新,可结合传感器、通信模块等外设

8.2 选题参考范围

类型推荐题目涉及知识点
显示类OLED 电子时钟、温湿度显示终端GPIO、定时器、I2C/SPI、ADC
控制类直流电机调速系统、步进电机控制PWM、定时器、GPIO
通信类蓝牙遥控小车、串口数据采集系统UART、中断、PWM
测量类数字电压表、超声波测距仪ADC、定时器输入捕获
智能化智能家居控制、循迹避障小车综合应用

8.3 报告撰写规范

课程设计报告需包含以下内容:

  1. 封面:题目、姓名、学号、班级
  2. 摘要:300 字左右的项目概述
  3. 系统方案:总体框图、方案论证与选择
  4. 硬件设计:原理图、器件选型说明
  5. 软件设计:程序流程图、关键代码说明
  6. 系统测试:测试方法、结果分析
  7. 总结与体会
  8. 参考文献

详细格式要求见 课设要求文档复习及答辩 PPT

8.4 综合项目代码骨架

课设通常是「按键 + LED/蜂鸣器 + 串口 + 定时器/PWM」的组合。下面是一个可复用的框架,把各实验学过的模块拼起来:

综合项目 main.c 骨架
#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "usart.h"
#include "timer.h"

int main(void)
{
    u8 key;

    delay_init();                    // ① 延时(SysTick)
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  // ② 中断分组(整个系统只设一次)
    LED_Init();                      // ③ 外设初始化
    KEY_Init();
    uart_init(115200);               // 串口,波特率 115200
    TIM3_Int_Init(4999, 7199);       // 定时器中断,500ms

    printf("System Start, Clock = %dHz\r\n", SystemCoreClock);   // ④ 串口打印启动信息

    while (1)
    {
        key = KEY_Scan(0);           // ⑤ 按键扫描(防抖)
        switch (key)
        {
            case KEY0_PRES:  LED_Toggle();       printf("KEY0\r\n"); break;
            case KEY1_PRES:  Beep_Toggle();      printf("KEY1\r\n"); break;
            default: break;
        }
    }
}

// 定时器中断服务函数:每隔 500ms 做周期任务
void TIM3_IRQHandler(void)
{
    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
    {
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
        // 周期任务,如:采集传感器、刷新显示
    }
}
💡 这段代码怎么用?
  1. 把 ①~⑤ 作为标准步骤背下来:延时 → 中断分组 → 外设初始化 → 串口打印 → 主循环扫描
  2. printf 输出依赖实验 11 的 fputc 重定向,能帮你快速定位「卡在哪一步」
  3. 主循环保持精简,周期任务放定时器中断里——这是嵌入式程序的基本架构

8.5 评分标准

项目分值评分要素
功能完整性30基本功能实现,扩展功能酌情加分
硬件设计20电路设计合理,器件选型恰当
软件设计20程序结构清晰,代码规范,注释完整
设计报告20格式规范,内容完整,分析深入
答辩表现10演示流畅,回答问题准确
💡 建议可从实验课上做过的项目作为起点,在其基础上增加功能扩展。也可以到 资源中心 > GitHub 开源仓库 寻找灵感。
📎 配套资料课件:8.课设.pptx | 课设要求:实验17-18:课设