摘要:
今天学习STM32 的通用定时器:TIMx (TIM2、TIM3、TIM4 和 TIM5)。 定时器比较复杂,功能繁多,这里我们就说最基本的计数功能。 1.定时器的时钟从哪里来? 定时器的时钟来源有 4 个: 1)内部时钟(CK_INT) 2)外部时钟模式 1:外部输入脚(TIx) 3)外部... 阅读全文
摘要:
窗口看门狗有一个提前唤醒中断,如果开启这个中断,那么当计数器的值达到0x40的时候就会产生这个中断。 上次的代码加一点就可以做这个实验了。 void WWDG_Init(u8 tr,u8 wr,u32 fprer){ RCC_APB1PeriphClockCmd(RCC_APB1Periph_... 阅读全文
摘要:
什么是窗口看门狗? 1)独立看门狗 限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚。 2)窗口看门狗 之所以称为窗口就是因为其喂狗时间是一个“窗口”,不能过早也不能过晚。 STM32F10x 的窗口看门狗中有一个7位的递减... 阅读全文
摘要:
STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在... 阅读全文
摘要:
今天我们看看STM32的外部中断实验。 STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一一对应起来的呢? STM32 这样设计,GPIO 的管脚 GPIOx.0 ~ GPIOx.15 ... 阅读全文
摘要:
今天继续学习stm32的串口编程(利用库函数)。上次我们说了串口的发送,这次我们说接收。 接收可以用查询的方法,也可以用中断。显然,工程中多用中断的方式,那么就来看看中断接收。 代码其实很简单,基本的配置不变,在上次的基础上加一点(优先级的配置和接收中断的使能)就可以了。 //U... 阅读全文
摘要:
串口在工作中经常用到,今天我们从零开始学习stm32的串口编程(利用库函数)。 先从最简单的情况开始,假设我们要实现的功能就是串口发送一个字节,不考虑接收,也不考虑中断。 那么要解决两个问题: 1 串口的初始化 2 发送一个字节 对于1,我们看看代码。 //bound 表示波特率void ua... 阅读全文
摘要:
在C中,有三个作用: 1.修饰全局变量: 作用是隐藏,也就是这个全局变量仅在本文件中可见。 2.修饰局部变量: 作用是扩展变量的生存期,令这个局部变量成为静态的。 3.修饰函数: 作用是隐藏,将此函数的作用域限制在本文件中。 在C++中,有两个作用: 1.修饰成员变量: 静态成员是类的所有对... 阅读全文
摘要:
接着上次的话题。这次我们要讨论,二叉查找树的中序遍历和后序遍历(递归和非递归),另外还有先序遍历(非递归) 1.中序遍历(递归) static void __in_order(struct bnode_info *bnode, void (*tod... 阅读全文
摘要:
1.基本概念 STM32(Cortex-M3架构)中有两个优先级的概念——抢占式优先级和响应优先级.有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。 当两个中断源的抢占... 阅读全文