M0单片机的套路

本文为STM32 M0内核单片机初学者详解时钟配置、定时器应用、外部中断设置和UART通信。通过实例介绍每个功能的工作原理和配置步骤,帮助理解单片机基础操作。
摘要由CSDN通过智能技术生成

为初学者捋顺M0内核单片机(stm32f0 A31L12x…)某些概念并串联起来如何使用,文章借鉴附带原文链接及水印。

1、时钟

时钟振荡器(晶振)起振产生振荡电路,时钟电路就像振荡器,像心脏泵。
任何外设都需要时钟,单片机代码最底层的就是写入读出寄存器的值。因为寄存器是由D触发器组成的,往触发器里面写东西,前提条件是有时钟输入。

不同芯片时钟不同,STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。这些时钟源组成一个电路,经过分频,倍频等输出不同频率时钟36MHz,72MHz,168MHz。。。(具体电路看芯片手册)
类似这样的图
在这里插入图片描述

你配置一些数值就可以输出你想要的时钟频率。
一般都会用芯片支持的最大频率配置(因为这是最快的),这最大频率就是系统时钟频率,一些外设可能会配置的低点。像STM32F1,fsmc外设用系统时钟(总线时钟)RCC_AHBPeriph_FSMC 73MHz,还有一些外设用RCC_APB2Periph_GPIOD 36MHz。这些看示例程序配置。

Sysclock_Config();系统时钟配置一般在初始化程序最开始。

2、定时器

属于芯片的资源,例如stm32的TIM1-8
在这里插入图片描述

定时器说白了就是个计数器,就像我们用心跳粗略估算时间一样,心脏跳动粗略可以认为是1s,那么我们计时60次心跳就过了60秒。就会产生中断。实际操作中:我们要实现60秒定时,CK_CNT是1s,我们设置CNT计数器向上计数开启中断,因为只有溢出时,也就是计数到65535时才会有中断,那么我们设置CNT计数器为65535-60=65475,开始及时,那么60秒后就会产生中断。我们设置自动重装载寄存器ARR也为65475,当CNT计数器溢出时,自动重装载寄存器ARR就会自动装载到CNT计数器中,就能实现自动循环定时60秒。

基本使用:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 中断优先级配置
TIM3_PWM_Init(40,0);初始化配置
当定时器中断溢出时(例如到60s了),执行TIM3_IRQHandler()中断处理,你要做的事。
参考:https://blog.csdn.net/zhuizhiye1100/article/details/89388317.

备注:外部中断一般指的是处理器提供给外部设备的中断;定时器中断和串口中断一般是处理器内部的定时器和串口模块的中断。 这些中断都连接到处理器内部的中断控制器上,由中断控制器来控制。 中断是否发生都由处理器中断控制器控制,定时器、串口等是片上外设,直接与中断控制器(nvic之类)连接,一旦定时器等片上外设有中断标志,nvic允许,就触发中断; 外部中断是留给片外的其他设备(通过引脚连接,gpio),这种由于中断资源有限(数量,很少能每个引脚都能产生中断吧)、需要映射到哪些引脚、上升沿还是下降沿等等,一般不是直接连接nvic,多了一个专门控制这些的,就外部中断/事件控制器,EXTI,这个和定时器同等是片上外设,外部信号经过exti产生中断标志,(exti连接至nvic),再经nvic看是否触发。

3、外部中断

首先中断是在程序顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值