如何学习神舟三号开发板?神舟三号开发板入门教程

神舟三号开发板是一款基于强大ARM Cortex-M3内核(STM32F103VET6微控制器)的嵌入式学习与开发平台,它集成了丰富的外设资源,是学习STM32、进行项目原型开发的理想选择,本教程将引导您从零开始,逐步掌握在神舟三号开发板上进行程序开发的核心流程和关键技巧。

如何学习神舟三号开发板?神舟三号开发板入门教程

开发环境搭建:坚实的起点

在动手编写代码前,一个稳定高效的开发环境是基石,对于神舟三号开发板(STM32F103系列),主流选择有:

  1. Keil MDK-ARM (uVision): 行业标准IDE之一,功能强大,调试方便,对STM32支持完善,需安装对应的STM32 Device Family Pack (DFP)。
  2. STM32CubeIDE: ST官方推出的免费集成开发环境,基于Eclipse,集成了STM32CubeMX配置工具,图形化配置外设非常便捷,代码生成效率高。强烈推荐初学者使用此环境。
  3. IAR Embedded Workbench: 另一款商业级专业IDE,性能优异,优化效果好。
  4. 搭配工具链 (GCC Arm): 如 PlatformIO (VSCode插件) 或 System Workbench for STM32 (SW4STM32),提供更灵活的开源开发体验。

基础步骤:

  • 下载并安装 您选择的IDE(如STM32CubeIDE)。
  • 连接开发板: 使用USB线(通常连接板载的USB转串口接口)将神舟三号开发板连接到电脑,确保安装了正确的USB驱动程序(通常IDE安装包会包含或自动安装)。
  • 安装/更新固件包: 在IDE中(如STM32CubeIDE),确保安装了针对STM32F1 Series的HAL库、LL库或标准外设库(SPL)支持包,HAL库(硬件抽象层)是目前ST主推的库,跨系列兼容性好,开发效率高。

第一个程序:点亮LED (GPIO输出控制)

控制LED闪烁是嵌入式世界的“Hello World”,神舟三号开发板通常板载多个用户LED(如连接在PC13、PC14、PC15等引脚)。

使用STM32CubeIDE的步骤:

  1. 创建新工程: 启动STM32CubeIDE -> File -> New -> STM32 Project。

  2. 选择MCU: 在搜索框中输入STM32F103VETx,选中它并点击Next。

  3. 配置工程: 输入工程名(如HSZ3_LED_Blink),选择工程路径,点击Finish,此时STM32CubeMX配置界面会自动打开。

    如何学习神舟三号开发板?神舟三号开发板入门教程

  4. 图形化配置:

    • 系统时钟 (SYS): 在System Core -> SYS中,将Debug设置为Serial Wire(使用板载ST-LINK调试器)。
    • 时钟配置 (RCC): 在System Core -> RCC中,将High Speed Clock (HSE)设置为Crystal/Ceramic Resonator(使用外部8MHz晶振)。
    • GPIO配置: 在左侧引脚图中找到连接LED的引脚(例如PC13),点击该引脚,选择GPIO_Output,在右侧的GPIO配置标签页中,可以设置:
      • GPIO output level: 初始电平(低电平点亮LED则设为High,高电平点亮则设为Low)。
      • GPIO mode: Output Push Pull (推挽输出)。
      • GPIO Pull-up/Pull-down: 通常选择No pull-up and no pull-down。
      • Maximum output speed: Low (LED控制无需高速)。
    • 时钟树配置: 点击顶部Clock Configuration标签页,通常HSE输入为8MHz,通过PLL倍频到72MHz(STM32F103的最高主频),STM32CubeMX会自动计算并设置PLL参数,确保HCLK (MHz)显示为72。
  5. 生成代码: 点击顶部工具栏的Project -> Generate Code或齿轮图标,IDE会根据配置生成初始化代码。

  6. 编写用户代码: 回到代码编辑界面,在Core/Src/main.c文件中,找到main()函数内部的while (1)主循环。

  7. 添加闪烁逻辑: 在while (1)循环内添加以下代码(假设LED在PC13,低电平点亮):

    / USER CODE BEGIN WHILE /
    while (1)
    {
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // 点亮LED (低电平)
        HAL_Delay(500); // 延时500毫秒
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);   // 熄灭LED (高电平)
        HAL_Delay(500); // 延时500毫秒
        / USER CODE END WHILE /
        / USER CODE BEGIN 3 /
    }
    / USER CODE END 3 /
    • HAL_GPIO_WritePin(Port, Pin, PinState): 设置指定GPIO引脚的电平。
    • HAL_Delay(ms): 提供毫秒级延时(基于SysTick定时器)。
  8. 编译与下载: 点击工具栏的Build(锤子图标)编译工程,成功编译后,点击Debug(虫子图标)或Run(绿色三角图标),程序会自动下载到开发板并开始运行(或进入调试模式),观察板载LED是否开始闪烁。

深入中断系统:响应外部事件 (以按键为例)

轮询(如不断检查按键状态)效率低下,中断能即时响应外部事件(如按键按下),神舟三号开发板通常板载用户按键(如连接在PA0,对应外部中断线0)。

配置步骤 (STM32CubeMX):

  1. 在现有工程或新工程中: 打开STM32CubeMX配置。
  2. 配置按键引脚 (如PA0):
    • 点击PA0引脚,选择GPIO_EXTI0(表示连接到外部中断线0)。
    • 在右侧GPIO配置标签页中:
      • GPIO mode: External Interrupt Mode with Rising/Falling edge trigger detection (上升沿/下降沿触发)。
      • GPIO Pull-up/Pull-down: 根据按键电路设计选择,若按键按下拉低PA0,则选择Pull-up(上拉),这样默认是高电平,按下变低电平。
      • NVIC Settings: 在System Core -> NVIC中,找到对应的外部中断线(如EXTI line0 interrupt),勾选Enabled开启中断,并设置合适的优先级(Preemption Priority抢占优先级,Sub Priority子优先级)。
  3. 生成代码。
  4. 编写中断回调函数: STM32 HAL库使用回调函数机制处理中断,在Core/Src/stm32f1xx_it.c中,找到EXTI0_IRQHandler函数,它会调用HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0),我们需要在用户文件中实现弱定义的回调函数。
    • 在Core/Src/main.c文件顶部(/ USER CODE BEGIN Includes /之后)添加:
      / USER CODE BEGIN PFP /
      void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
      / USER CODE END PFP /
    • 在main.c文件底部(/ USER CODE END 4 /之后)实现该函数:
      / USER CODE BEGIN 4 /
      void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
        if (GPIO_Pin == KEY_Pin) { // KEY_Pin 需要根据你的按键定义,#define KEY_Pin GPIO_PIN_0
          // 按键按下(下降沿)或释放(上升沿)触发中断
          // 通常需要简单的消抖处理
          HAL_Delay(50); // 延时消抖
          if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET) { // 假设按下为低电平
            // 执行按键按下的操作,例如翻转LED状态
            HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); // 翻转LED引脚状态
          }
        }
      }
      / USER CODE END 4 /
      • HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin): 所有GPIO外部中断最终都会调用这个回调函数,通过GPIO_Pin参数判断是哪个引脚触发。
      • HAL_GPIO_TogglePin(Port, Pin): 翻转指定GPIO引脚的电平状态。
      • HAL_GPIO_ReadPin(Port, Pin): 读取指定GPIO引脚的电平状态。
  5. 编译、下载、测试: 按下按键,观察LED状态是否翻转。

串口通信:与外界对话 (UART)

如何学习神舟三号开发板?神舟三号开发板入门教程

串口(UART)是嵌入式开发中最基础、最重要的调试和通信接口,神舟三号开发板通常通过板载USB转串口芯片(如CH340)提供至少一个用户可用串口(如USART1)。

配置步骤 (STM32CubeMX):

  1. 在工程配置中: 打开STM32CubeMX。
  2. 配置串口引脚 (如USART1):
    • 找到USART1,将其模式Mode设置为Asynchronous(异步通信)。
    • 自动配置引脚:通常TX(PA9), RX(PA10)。
    • 参数配置: 在Configuration -> Connectivity -> USART1中:
      • Baud Rate: 设置波特率(常用9600, 115200等)。
      • Word Length: 8 Bits。
      • Parity: None。
      • Stop Bits: 1。
      • Over Sampling: 16 Samples。
    • 中断/DMA (可选但推荐):
      • 中断方式: 在NVIC Settings中,使能USART1 global interrupt,适合低速或不定长数据接收。
      • DMA方式: 在DMA Settings标签页,添加RX和TX的DMA通道(选择优先级Priority为Medium或High,模式Mode为Normal或Circular),适合高速、大数据量传输,减轻CPU负担。推荐掌握DMA方式提升效率。
  3. 生成代码。
  4. 编写串口收发代码 (以中断接收为例):
    • 初始化后启动接收: 在main()函数初始化部分(/ USER CODE BEGIN 2 /)之后,添加:
      / USER CODE BEGIN 2 /
      // 启动串口接收中断 (接收1个字节到缓冲区)
      uint8_t rxBuffer[1];
      HAL_UART_Receive_IT(&huart1, rxBuffer, 1); // huart1是CubeMX生成的串口句柄
      / USER CODE END 2 /
    • 实现接收完成回调函数: 在main.c底部实现:
      / USER CODE BEGIN 4 /
      void HAL_UART_RxCpltCallback(UART_HandleTypeDef huart) {
        if (huart->Instance == USART1) { // 判断是哪个串口
          // 处理接收到的1字节数据 rxBuffer[0]
          // 将接收到的字节原样发送回去 (回显)
          HAL_UART_Transmit_IT(&huart1, rxBuffer, 1);
          // 重新启动接收中断,准备接收下一个字节
          HAL_UART_Receive_IT(&huart1, rxBuffer, 1);
        }
      }
      / USER CODE END 4 /
    • 发送数据: 在需要发送数据的地方调用:
      char message[] = "Hello, Shenzhou III!rn";
      HAL_UART_Transmit(&huart1, (uint8_t)message, strlen(message), HAL_MAX_DELAY); // 阻塞式发送
      // 或使用中断发送 HAL_UART_Transmit_IT(&huart1, (uint8_t)message, strlen(message));
      // 或使用DMA发送 HAL_UART_Transmit_DMA(&huart1, (uint8_t)message, strlen(message));
  5. 连接串口终端: 使用串口调试助手(如Putty, Tera Term, MobaXterm等),选择开发板对应的串口号(在设备管理器中查看),设置与代码中相同的波特率(如115200),数据位8,停止位1,无校验,上电后,在终端输入字符,应能看到回显,发送Hello, Shenzhou III!也应能在终端显示。

进阶应用与资源

掌握了GPIO、中断、UART这些核心外设后,您可以探索神舟三号开发板更强大的功能:

  • 定时器 (TIM): 用于精准定时、PWM输出(控制LED亮度、舵机、电机)、输入捕获(测量脉冲宽度、频率)、输出比较等,结合HAL库的PWM接口,可以轻松控制板载LED实现呼吸灯效果。
  • 模数转换器 (ADC): 读取模拟传感器数据(如电位器、光敏电阻、温度传感器),神舟三号开发板通常引出多个ADC通道。
  • 直接存储器访问 (DMA): 在串口、ADC、SPI、I2C等外设与内存之间进行高速数据传输,无需CPU干预,极大提高系统效率,强烈建议在数据量大的场景中使用。
  • SPI/I2C总线: 连接各种外设模块,如OLED/LCD屏幕、EEPROM存储器、加速度计/陀螺仪传感器、无线模块(NRF24L01, ESP8266/32)等,理解总线协议和HAL库的驱动函数是关键。
  • 实时操作系统 (RTOS): 如FreeRTOS、uC/OS-II/III,当应用逻辑变得复杂,需要多任务调度、同步通信、资源管理时,引入RTOS是必要的,神舟三号开发板资源足够运行小型RTOS。
  • 文件系统: 通过SPI接口连接SD卡模块,使用FATFS等库实现文件读写。
  • 网络连接: 通过串口或SPI连接以太网模块(如W5500)或WiFi模块(如ESP8266),实现网络通信。

官方与社区资源:

  • ST官网: 获取STM32F103VET6数据手册(DS)、参考手册(RM)、编程手册(PM)、应用笔记(AN)、HAL/LL库文档、STM32CubeF1固件包,这是最权威的技术资料。
  • 开发板原理图: 务必找到您使用的神舟三号开发板的原理图PDF文件,这是理解硬件连接、排查问题的根本依据。
  • STM32CubeMX软件: 图形化配置工具,大幅提升初始化效率。
  • 开源社区: GitHub、Gitee上有大量基于STM32F1和神舟三号开发板的开源项目、驱动库、示例代码可供学习参考。
  • 技术论坛: 如电子工程世界(EEWorld)、21ic、CSDN、Stack Overflow等,遇到问题可以搜索或提问。

调试技巧:解决问题的利器

  • 串口打印: 最基本也是最常用的调试手段,使用printf重定向到串口输出变量值、状态信息。
  • LED指示: 用不同的LED闪烁模式表示程序运行的不同状态或错误码。
  • 断点调试 (Debugger): 利用板载ST-LINK或J-Link等调试器,在IDE中设置断点,单步执行,查看寄存器、内存、变量值,这是定位逻辑错误最有效的方法。
  • 逻辑分析仪: 用于抓取和分析GPIO、UART、SPI、I2C等数字信号波形,验证时序是否正确,对于通信协议调试非常有用。
  • 万用表/示波器: 检查电源电压、信号电平、模拟量等硬件基础。

互动问答:

掌握了神舟三号开发板的这些核心开发技能,您已经具备了进行丰富项目实践的基础,在实际开发中,您遇到了哪些印象深刻的挑战?是某个外设的驱动调试,还是RTOS任务间的通信问题?或者您有关于ADC多通道采样、PWM高级应用、低功耗模式等方面的具体疑问?欢迎在评论区留言分享您的经验或提出您遇到的难题,让我们一起交流探讨,共同进步!您最想用神舟三号开发板实现什么样的创意项目呢?

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/11498.html

赞 (0)
Hostus哪家国外VPS最便宜?- Hostus优惠低至$20/年,香港新加坡多机房
上一篇 2026年2月6日 21:01
高洛峰微信开发教程 | 如何快速入门?
下一篇 2026年2月6日 21:04

相关推荐

  • 图片文件存储方案有哪些?图片存储怎么选择最划算

    关于图片文件的存储爆发式增长的今天,图片文件已成为网站流量与用户体验的核心载体,从高清产品图到动态表情包,从SEO友好的WebP格式到无损的RAW原片,图片存储不再仅仅是简单的“存放”,而是涉及带宽消耗、加载速度、数据安全性以及成本控制的复杂系统工程,对于中小型网站、电商卖家以及内容创作者而言,选择正确的图片存……

    2026年5月30日
    6000
  • 红米3手机怎么开发,红米3开发者选项在哪里打开

    红米3手机开发的核心价值在于其极高性价比的硬件整合能力与深度定制的软件生态构建,这一过程不仅重新定义了千元机市场的技术标准,更展示了在有限成本下实现最优用户体验的工程哲学,红米3手机开发的成功,本质上是供应链精准把控、工业设计创新与系统级优化三者协同进化的结果,为后续智能手机普及化进程确立了标杆范式, 工业设计……

    2026年3月9日
    12800
  • 如何实现多彩下拉框?ASPNET开发实例详解

    ASP.NET多彩下拉框开发实例在ASP.NET Web Forms中实现多彩下拉框的核心在于将数据绑定与CSS样式动态集成,通过为下拉列表的每个项添加自定义属性存储颜色值,并借助jQuery在客户端实时渲染样式,可创建直观且交互性强的用户界面,以下为详细实现方案:核心实现步骤数据模型定义 (C#)public……

    2026年2月12日
    11800
  • LiquidWeb美国荷兰服务器怎么样?15美元/月实测性能值得买吗

    在跨境业务与高流量站点的架构中,裸机服务器的底层性能直接决定了业务的稳定性与扩展上限,LiquidWeb作为业内以高可用性和全托管服务著称的老牌主机商,其位于美国与荷兰机房的服务器一直备受企业级用户关注,本次测评针对LiquidWeb旗下入门级单机服务器(月费15美元档位)进行深度实测,涵盖计算、存储、网络及真……

    2026年4月27日
    5000
  • 前端的开发模式有哪些?前端开发模式详解

    现代前端开发模式的核心在于组件化思维与工程化体系的深度融合,这一模式彻底改变了传统“切图”式的开发方式,将前端项目从简单的页面构建提升为复杂的软件工程,核心结论是:前端开发已不再是孤立的代码编写,而是基于模块化、组件化、自动化构建与规范化协作的系统化工程,这种转变显著提升了代码的复用率、可维护性以及项目的交付效……

    2026年3月13日
    13000
  • 人脸检测与识别技术是什么?人脸识别技术原理及发展趋势

    关于人脸检测与识别技术的研究在人工智能视觉感知的核心领域,人脸检测与识别技术已从实验室走向规模化商业应用,算法的先进性仅占解决方案的一半,另一半则取决于底层算力基础设施的稳定性、并发处理能力以及推理延迟,对于部署在云端或边缘侧的服务器而言,如何承载高并发的实时视频流分析,成为决定业务成败的关键,本文旨在通过深度……

    2026年6月5日
    4200
  • 个人网站真实性怎么核验?个人网站备案查询入口

    个人网站真实性核验单在数字化生存的时代,个人网站不仅是技术爱好者的自留地,更是展示专业技能、沉淀知识资产以及建立个人品牌的核心阵地,随着互联网监管的日益规范,“真实性核验”已成为个人网站合法合规运营的第一道门槛,本文将从服务器选型、备案流程、合规运营及优惠策略四个维度,为您提供一份详尽的实操指南, 服务器选型……

    2026年7月5日
    17600
  • 开发廊的小姐赚钱吗?开理发店的女人真实收入揭秘

    经营一家美发沙龙,核心在于通过精细化的管理与服务体系,将单纯的剪发业务转化为高附加值的综合美学体验,从而实现利润最大化与品牌口碑的长期积累,成功的美发店运营并非单纯依赖技师个人手艺,而是建立在标准化的服务流程、精准的客户管理系统以及持续的技术迭代之上,对于从业者而言,理解并掌握这一商业逻辑,是规避经营风险、锁定……

    2026年3月22日
    12700
  • AI畜牧到底好不好?AI畜牧应用案例有哪些

    AI畜牧好不好?答案是肯定的,它不仅是提升效率的工具,更是解决劳动力短缺、实现精准养殖的必然趋势,虽然初期投入较高,但长期来看能显著降低综合成本并提升肉质安全,曾经,养殖户靠经验喂猪、凭感觉看病;数据成了新的“饲料”,算法成了隐形的“兽医”,走进现代化的智慧养殖场,你听不到传统的吆喝声,取而代之的是传感器轻微的……

    2026年6月5日
    3810
  • 什么是AIoT开放平台?物联网平台开发有哪些优势

    AIoT开放平台本质上是连接物理设备与数字智能的“中枢神经”,通过标准化接口和云端算力,让传统硬件瞬间具备联网、感知与决策能力,是企业实现数字化转型最高效的基础设施,想象一下,你家里的智能音箱能听懂指令,工厂里的机械臂能自动调整参数,这些背后都不是魔法,而是AIoT(人工智能物联网)在起作用,过去,做物联网就像……

    2026年6月17日
    2700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(1条)

  • 酷绿8272
    酷绿8272 2026年2月19日 13:45

    这种开发板USB口容易虚焊,下载失败记得先检查这里。