摘要:
stm8s和stm8l低功耗对比 在低功耗应用中,一般来说mcu是常态halt模式,然后偶尔被唤醒(外部中断或者内部定时唤醒)进入运行模式。所以对比低功耗性能,一般来说只需要对比run模式和halt下的功耗即可,因为项目选用的是通过内部定时器唤醒,所以选用active halt mode。以下是st 阅读全文
摘要:
由于单向链表只能从头遍历,那么在做增删改查操作时,必须从头结点开始遍历。特别是在尾节点做追加操作时,需要将所有节点全部遍历一遍。在时间上花费较多。但是双向链表就不存在这个问题,在对双向链表做追加操作时只需要对头结点的先序节点进行一次遍历就到达了链表的尾部。这样就大大的减少了时间上的开销。 以下是双向 阅读全文
摘要:
STM32 DMA简述 DMA (Direct Memory Access) 直接内存存储器,在做数据传输时能够大大减轻CPU的负担。 DMA的作用 DMA提供了一个关于数据的高数传输通道,这个通道不占用CPU的资源。换句话说,通过DMA通道,你在传输大规模数据的时候CPU同时也能够去干其他事。 你 阅读全文
摘要:
STM32的中断系统 STM32具有十分强大的中断系统,将中断分为了两个类型:内核异常和外部中断。并将所有中断通过一个表编排起来,下面是stm32中断向量表的部分内容: 上图 3到6这个区域被标黑了,这个区域就是内核异常。内核异常不能够被打断,不能被设置优先级(也就是说优先级是凌驾于外部中断之上的) 阅读全文
摘要:
STM32的时钟系统 相较于51单片机,stm32的时钟系统可以说是非常复杂了,我们现在看下面的一张图: 上图说明了时钟的走向,是从左至右的从时钟源一步步的分配给外设时钟。需要注意的是,上图左侧一共有四个时钟源,从上到下依次是: 高速内部时钟(HSI): 以内部RC振荡器产生,频率为8Mhz,但相较 阅读全文
摘要:
STM32的IO口模式配置 根据数据手册提供的信息,stm32的io口一共有八种模式,他们分别是: 四种输入模式 1. 上拉输入: 通过内部的上拉电阻将一个不确定的信号通过一个电阻拉到高电平。 2. 下拉输入: 把电压拉到GND。与上拉原理相似。 3. 浮空输入: 引脚内部什么都不接,处于浮空模式下 阅读全文
摘要:
七.单向链表:增,删,改,查 该链表拥有一个头节点,头节点中的数据域用来存储链表的节点个数,指针域指向第一个数据节点。以下是代码。 链表结构体定义: 创建头节点 增加节点函数 :在链表尾部增加一个节点 创建链表 :利用AddNode()函数批量创建节点 修改指定节点的值 :修改第num个节点的值 插 阅读全文
摘要:
很多人可能不知道,C\C++编译器提供了一套针对代码文件的宏定义,它们能够帮助开发者更好的定位代码的BUG。 \_\_FILE\_\_ 该宏定义是一个字符串,存储着当前代码文件的完整路径 \_\_LINE\_\_ 该宏定义是一个int型变量,表示当前所在的代码行数 以下代码能够帮助理解: 上述代码输 阅读全文
摘要:
在项目开发中,我们经常会使用到动态库(dll),要么是使用别人的动态库,要么是将功能函数封装为动态库给别人用。那么如何封装和使用动态库呢?以下内容为你讲解。 1.动态库的封装 以vs2010为例,我们在创建项目的时候,首先选择 win32控制台项目 ,然后在应用程序设置中选择 DLL .如下图: 选 阅读全文
摘要:
4.利用指针间接赋值 我们都知道,指针是指向一段内存空间的。而这个内存空间也可以存放下一个内存空间的地址,这样一级级的传递下去,就变成了多级指针。在C语言中,多级指针是经常会用到的。 多级指针像一把双刃剑,有利也有弊。你能够用它完成一些奇淫技巧,也会遇到一些不可捉摸的错误。 其中,指针有一个非常重要 阅读全文