十速单片机学习归纳总结(四):LED闪烁实验

本文详细介绍了如何在单片机上进行LED闪烁实验,从选取IO口到编写逻辑代码,再到解释代码细节。在VSCode中完成main.c和main.h文件的编写,通过Keil C51编译器进行debug测试,确定了LED的电平控制。实验结果显示,低电压使LED亮,高电压使其熄灭。文章还深入解析了框架代码和初始化函数,为初学者提供了清晰的学习路径。

前言

通过前一篇文章的分享,我们已经成功搭建好了一个普适性的单片机框架,而这篇文章我们将开始编写第一个实验:LED闪烁实验。
代码的编写均在VSCode编辑器中进行;编写代码的文件为main.c文件和main.h文件!

步骤一

首先需要先在单片机上任意找一个IO口,如:P2_0
接着在main.h文件中写入代码:

#define P_led1 P2_0
#define F_led1On() P_led1 = 0
#define F_led1Off() P_led1 = 1

然后在main.c文件的主函数中写入:

#define __main_c
#include "includeAll.h"

//============================================
void main() {
  F_turnOnWDT(); // 看门狗寄存器
  InitSys();

  while (1) {
    F_led1On();
    F_led1Off();
  }
}
//============================================
void InitSys() {
  // system clock
  CLKCON = 0x03;  // Clock div 1
  STPPCK = 0;
  STPFCK = 0;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  SELFCK = 1;

  // I/O init
  P2MOD = 0xa;
}
//=========================================
十速单片机是一种具有高速处理能力的微控制器,广泛应用于需要快速数据处理和实时响应的场景。这类单片机通常具备较高的主频、丰富的外设接口以及优化的指令集,以满足复杂控制和运算需求。以下是一些关于十速单片机的技术资料和开发资源的获取途径及建议: ### 获取技术手册和开发指南的途径 1. **官方文档** 十速单片机的技术手册和开发指南通常由芯片制造商提供,例如Microchip、STMicroelectronics、NXP等。这些文档包括详细的寄存器配置、时钟管理、中断系统、外设使用说明等关键信息。用户可通过官方网站的产品页面下载PDF格式的手册或在线查阅HTML版本[^1]。 2. **开发套件与评估板** 大多数厂商会为十速单片机提供配套的开发套件(如ST的STM32 Nucleo系列、Microchip的Xplained系列),其中包含完整的硬件平台、示例代码、调试工具链以及用户指南。这些资源有助于快速上手并理解芯片的底层操作机制[^1]。 3. **在线社区与论坛** 参与嵌入式开发社区(如Stack Overflow、EEVblog、STM32中文社区)可以获取实际开发者的经验分享、调试技巧以及常见问题的解决方案。此外,GitHub等代码托管平台也提供了大量基于十速单片机的开源项目,可作为学习和参考[^1]。 4. **集成开发环境(IDE)** 使用厂商提供的IDE(如STM32CubeIDE、MPLAB X IDE)可以简化开发流程,集成编译器、调试器、代码生成工具等模块。IDE通常附带详细的帮助文档和示例工程,帮助开发者快速构建应用程序[^1]。 5. **教学资源与书籍** 针对十速单片机的开发,市面上有诸多专业书籍和在线课程,例如《STM32嵌入式开发实战》《ARM Cortex-M开发指南》等。这些资料从基础原理到高级应用层层递进,适合不同层次的学习者[^1]。 ### 开发资源示例 - **启动代码与外设驱动** 十速单片机的开发通常需要编写启动代码(Startup Code)以初始化系统时钟、中断向量表等。厂商SDK中通常包含标准外设驱动库,例如STM32的HAL库或LL库,简化了GPIO、定时器、ADC等模块的配置过程。 - **调试与烧录工具** 常见的调试工具包括J-Link、ST-Link、CMSIS-DAP等,支持在线调试和程序烧录。部分IDE内置调试功能,用户可通过图形界面设置断点、查看寄存器状态等。 - **实时操作系统(RTOS)支持** 十速单片机常用于运行实时操作系统(如FreeRTOS、Zephyr),以实现多任务调度和资源管理。厂商SDK和社区资源中通常包含RTOS的移植指南和示例代码。 ### 示例代码:GPIO初始化 以下是一个基于STM32系列十速单片机的GPIO初始化示例代码,展示了如何配置一个LED引脚为输出模式并点亮LED: ```c #include "stm32f4xx.h" void GPIO_Init(void) { // 使能GPIOA时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5; // 选择PA5引脚 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; // 设置为输出模式 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // 推挽输出 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz; // 设置输出速度为100MHz GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; // 无上拉/下拉 GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化GPIOA } int main(void) { GPIO_Init(); // 调用GPIO初始化函数 while (1) { GPIO_SetBits(GPIOA, GPIO_Pin_5); // 点亮LED for (volatile int i = 0; i < 100000; i++); // 简单延时 GPIO_ResetBits(GPIOA, GPIO_Pin_5); // 熄灭LED for (volatile int i = 0; i < 100000; i++); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值