结合存储器映像理解stm32标准库中定义外设地址的方法. stm32f103zet6是32位的.它所能访问的地址空间范围为2^32=4GB,把4GB分为8个block,分别为block0-block-7.把这8个block用于不同的用途. block0-block7的用途 图1 ———————————————————————————————————————————————————————— 图2 从上面的图2中可以看到block2作为外设的地址,也就是说我们操作的外设都在block2中.bloc…
STM32标准库GPIO操作 STM32任何外围设备的使用都分为两部分:初始化和使用.体现在代码上就是:(1)有一个初始化函数(2)main函数中的使用 1.初始化GPIO 初始化GPIO函数代码: void GPIOB_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE); GPIO_InitStructure.GPIO_…
1.CMSIS 标准及库层次关系 CMSIS 标准中最主要的为 CMSIS 核心层,它包括了: STM32标准库可以从官网获得: 在使用库开发时,我们需要把 libraries 目录下的库函数文件添加到工程中,并查阅库帮助文档来了解 ST 提供的库函数,这个文档说明了每一个库函数的使用方法. 这两个文件夹中,还有一个很特别的 misc.c 文件,这个文件提供了外设对内核中的NVIC(中断向量控制器)的访问函数,在配置中断时,我们必须把这个文件添加到工程中. 2.库各文件间的关系 对于位于用户层的…
CMSIS 标准及库层次关系 因为基于Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难.为了解决不同的芯片厂商生产的Cortex 微控制器软件 的兼容性问题,ARM 与芯片厂商建立了CMSIS 标准(CortexMicroController Software Interface Standard). 所谓CMSIS 标准,实际是新建了一个软件抽象层. CMSIS 标准中最主要的为CMSIS 核心层,它包括了: 内核…
CMSIS 标准及库层次关系 因为基于Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难.为了解决不同的芯片厂商生产的Cortex 微控制器软件 的兼容性问题,ARM 与芯片厂商建立了CMSIS 标准(CortexMicroController Software Interface Standard). 所谓CMSIS 标准,实际是新建了一个软件抽象层. CMSIS 标准中最主要的为CMSIS 核心层,它包括了: 内核…
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew Austern http://www.cuj.com/experts/1908/austern.htm?topic=experts 用泛型算法进行排序    C++标准24章有一个小节叫“Sorting and related operations”.它包含了很多对已序区间进行的操作,和三个排序用泛型…
Go标准库中提供了Sync.Once来实现"只执行一次"的功能.学习了一下源代码,里面用的是经典的双重检查的模式: // Once is an object that will perform exactly one action. type Once struct { m Mutex done uint32 } func (o *Once) Do(f func()) { if atomic.LoadUint32(&o.done) == 1 { return } // Slow…
在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你来实现某个函数的情况(比如strcpy).而且里面有些函数时间长不用就生疏了,本文就是要全面回顾这些函数. 1.NULL NULL是一个宏,可以扩展为空指针常量.空指针常量是一个等于零的整数常量表达式,后者是如(void *)0一样的从0转换为空指针void *.(A null-pointer co…
在使用标准库中的加锁机制时,例如我们使用std::mutex,写了如下的代码(下面的代码使用condition_variable可能更合适) std::mutex g_mtx; int g_resNum; // and how to get the resource ... // 线程1使用如下代码: { std::lock_guard<std::mutex> guard(g_mtx); // prepare the resource ... // set the resource num g…
题目描述 1.简单举例 Python 标准库中的装饰器 2.说说你用过的 Python 标准库中的装饰器 1. 首先,我们比较熟悉,也是比较常用的 Python 标准库提供的装饰器有:property,classmethod,staticmethod,functools.wraps四个.这四个的可考点比较多,这里将分别说明: 首先先来说明 functools.wraps,这个我们在之前翻译装饰器时已经谈到过.这里我们同样用代码来说明吧. # 比如一个简单的用来统计代码运行时长的装饰器import…