STM8入门:C语言开发与时钟系统设置详解

需积分: 12 2 下载量 75 浏览量 更新于2024-07-25 收藏 941KB PDF 举报
本文档是一篇关于STM8系列单片机C语言入门的指南,作者分享了自己的学习经验和遇到的问题。在STM8的开发环境中,开发过程通常涉及创建一个新的工程,其中包括两个主要的C语言文件:`main.c`和`stm8_interrupt_vector.c`。`main.c`初始时包含一个空的`main()`函数,这是程序的入口点。 在进行STM8的开发时,作者首先强调了电源系统和复位系统的设置,这两个部分作为STM8工作基础至关重要。电源系统通常包括一个104电容连接到reset脚以实现复位功能。复位系统仅需简单的电路即可实现。 文章的核心内容聚焦于时钟系统,因为无论是8位还是32位单片机,时钟管理都是编程的基础。作者起初的代码尝试通过以下步骤设置外部时钟: 1. 开启外部时钟 (`CLK_ECKR |= 0X1`) 2. 等待外部时钟准备就绪 (`while (!(CLK_ECKR & 0X2))`) 3. 保持CPU无分频 (`CLK_CKDIVR &= 0XF8`) 4. 选择外部时钟 (`CLK_SWR = 0XB4`) 5. 启用外部时钟 (`CLK_SWCR |= 0X2`) 然而,实际调试过程中,代码并不能稳定切换时钟,经过深入阅读STM8的RM0016文档,发现必须等待`CLK_SWCR`标志位置位,于是调整了代码: - 在启用外部时钟前,增加一个等待循环 (`while (!(CLK_SWCR & 0X8))`) 此外,作者还提到了STM8的三种时钟源:HSE(外部时钟)、HSI(内部16MHz时钟),以及它们在单片机启动时的默认状态。由于STM8启动时默认使用内部时钟,理解并正确配置时钟系统对于确保程序运行的稳定性至关重要。 总结来说,本文档介绍了STM8开发中C语言的基本结构,以及如何处理时钟系统,特别是当遇到实际问题时如何通过查阅文档来解决问题的方法。这对于初学者了解STM8编程和调试技巧非常有帮助。