之前的推文中说到,当使用一个外设时,必须先使能它的时钟.怎么通过库函数使能时钟呢?如需了解寄存器配置时钟,可以参考<STM32F10x中文参考手册>"复位和时钟控制(RCC)"章节,其中有详细的寄存器介绍.固件库已经把时钟相关寄存器的使能配置都封装好,放在stm32f10x_rcc.c和stm32f10x_rcc.h中.只需要打开stm32f10x_rcc.h文件,会发现有很多的宏定义和时钟使能函数的声明.这些时钟函数可大致分为三类.一类是外设时钟使能函数,一类是时钟源和倍…
在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率.在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul); 第一个参数是PLL时钟源选择,例程中一般采用的都是HSE作为PLL的时钟源,可以设置为RCC_PLLSource_HSE_Div1/RCC_PLLSource_HSE_Div2.第二个参数就是倍频因子值可以是RCC_PLLMul…
时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行.时钟系统犹如人的心脏,一旦有问题整个系统就崩溃.我们知道STM32属于高级单片机,其内部有很多的外设,但不是所有外设都使用同一时钟频率工作,比如内部看门狗和RTC,它只需30KHz的时钟频率即可工作,所以内部时钟源就有多种选择.在前面章节的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,将STM32F1系统时钟设置为72MHz,然后进入主函数.那么这个系统时钟大小如何得…
在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main.那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使用库函数编写的LED程序,在system_stm32f10x.c文件中可以找到SystemInit()函数,SystemInit()代码如下: void SystemInit (void){/* Reset the RCC clock configuration to the default res…
STM32最小系统组成 单片机最小系统,也就是能够使得单片机正常运行程序,最少需要连接哪些器件.一般来说,STM32最小系统由四部分组成: 电源电路 复位电路 晶振电路 下载电路 STM32单片机由ARMCortexM3.总线矩阵.外设组成.单片机开发板能够做哪些事情是自己的选择.我们可以制作一款STM32最小系统核心开发板,当然根据实际项目的需求,加上单片机的某些特定外设模块. 简单说,要利用到STM32芯片所有引脚来设计具有特定或者通用功能的开发板.首先要把STM32最小系统画出来,之后再添…
片上外设区分为四条总线,根据外设速度的不同,不同总线挂载着不同的外设,APB1挂载低速外设,APB2和AHB挂载高速外设.相应总线的最低地址我们称为该总线的基地址,总线基地址也是挂载在该总线上的首个外设的地址.APB1总线的地址最低,因此片上外设就从这这个地址开始,也称外设基地址. 总线基地址 从存储器映射那张图的Block2可以看到,分为4大块,每块都有一个起始地址,这个起始地址就是基地址,然后到下一块起始地址的时候就会和前一块地址出现偏差,这个差值就是偏移量,即相对基地址的偏移量.如下图所示…
好文章搬用工模式启动ing ..... { 文章中已经包含了原文链接 就不再次粘贴了 言明 改文章是一个系列,但只收录了2篇,原因是 够用了 } --------------------------------------------------------------------------------------- C#互操作系列文章: C#互操作性入门系列(一):C#中互操作性介绍 C#互操作性入门系列(二):使用平台调用调用Win32 函数 C#互操作性入门系列(三):平台调用中的数据封…
传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 C# 互操作性入门系列(四):在C#中调用COM组件 本专题概要: 引言 如何使用平台调用Win32 函数--从实例开始 当调用Win32函数出错时怎么办?--获得Win32函数的错误信息 小结 一.引言 上一专题对.NET 互操作性做了一个全面的概括,其中讲到.NET平台下实现互操作性有三种技术-…
系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难度并不高,但是理解起来还是比较复杂的,我会在本文中从实际应用出发去说明,当然最好去仔细研读宋岩翻译的<Cortex-M3权威指南>第八章,注意这不是一本教你如何编写STM32代码的工具书,而是阐述Cortex-M3内核原理的参考书,十分值得阅读. SysTick系统时钟的核心有两个,外设初始化和S…
时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处.心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来驱动,而这个脉冲的始源往往是由外部晶体振荡器提供时钟输入,最终转换为多个外部设备的周期性运作.这种时钟"能量"的传递路径犹如大树的养分由主干流向个分支,因此称为时钟树. STM32时钟: 在STM32中每个外设都有其单独的时钟,在使用某个外设之前必须打开该外设的时钟 ,为什么要这么麻烦来设…