当前位置: 首页 > 原理解释

stm32f103原理图库-stm32f103 原理图库

STM32F103 是个老伙计了,那会儿玩嵌入式嫩手的时候瞎掰它,目前得按规矩来。
这玩意儿说实话不算特别离谱,就是比 78xx 那种老古董略微有点“讲究”。 上电那一刻,寄存器里全是 0,时钟也是死一样的慢。晶振频率定 8 MHz,倍频器自己调成 16,实际跑在 32MHz 上,这速度在单片机圈里归于“下乘”行情,但STM32F103 的节律摆得挺稳。时钟源有三个档位,晶振、HSE、HSI。开机默认跑晶振,这点对后续调试挺关键。
要是你把 HSE 设成 128MHz 要么用 PLL 倍频,频率得先搞清楚,不然程序跑起来频率不对,时序就乱套。 看界面,ST 官网那个 IO 图,平时看着挺细致,但实际用起来要拿键盘敲,别光盯着屏幕看。
比如看 GPIO 配置,这个图树状图看着复杂,实际上逻辑挺好办。
比如 GPIOF,明明只用了 14 个脚,图里却画了八个寄存器,冗余是常态。先拿 P4、P5、P6 这组脚试一下,脚号对应关系别搞反了,STM32F 的 P 组引脚定义和 P 组汇编指令(比如 P10、P31)是一一对应的,别搞混了。 中断优先级是个坑。默认中断方式下,P0 是 0,P1 是 1,P2 是 2,P3 是 3。高优先级(数值小)的中断开关关着,低优先级(数值大)的中断开起来。
比如看 P0 中断,默认是关闭的,得手动开。
要是此时有个 10 位定时器中断来了,它优先于 P0 中断。
这个逻辑在写中断服务程序时特别关键,别为了省事设个最低优先级。 看寄存器配置,寄存器读写权限的生死大事。
一般/平平寄存器读是保险的,但写要是权限不够,直接报错。
比如看 GPIO 配置寄存器,一般写的是 0x40000000 开头,但有些新功能要么修改寄存器时,可能会用到 0x40000001 这种更复杂的地址。配置好复位和时钟后,先改个寄存器看看效果,别急着上代码。 看中断向量表,STM32F103 的向量表里,复位向量地址是 0x08000000,复位中断向量是 0x08000000。复位中断是系统启动时的第一桩,也是唯一的中断源,你要是把复位中断关掉了,系统复位后啥都看不见,得重新复位。
要是是系统启动时没搞定初始化直接上代码,那程序可能就跑在半路了。 看中断矢量表,看中断优先级,看中断向量表,看中断优先级。图上标着“自动”和“手动”两类。自动处理是系统复位后要么异常形成时,由硬件自动处理;手动处理需求你主动写中断服务程序。自动处理的中断优先级是 0、1、2、3,顺序是 0 最高,3 最低。手动处理的中断优先级也是按这个顺序,但你能够写一个中断屏蔽寄存器,把某个优先级较低的自动中断屏蔽掉,只保留高优先级的突发中断,比如看中断 6 向量表,看中断优先级,看中断向量表。 看中断向量表,看中断优先级,看中断优先级。
这个图在实操里用得顶多。
比如你写个定时器中断,定时器中断优先级设为 0,而看中断 6 的优先级设为 3。
这时候定时器中断来了,先执行看中断 6,执行完看中断 6 复位后,再执行定时器中断。务必搞清楚“先复位还是先执行”的区别,大量调试报错都是出于这个。 看中断向量表,看中断优先级,看中断向量表。
比如看中断 6 向量表,看中断优先级,看中断向量表。
看中断 6 向量表里有个“自动”选项,这个在 STM32F103 里比较特殊,一般是看中断 3 中的自动。
看中断 6 中断向量表,看中断优先级,看中断向量表。
这个选项指的是看中断 6 的中断形成方式,若选自动,则形成中断时自动配置看中断 6 的中断状态为中断突形成,且自动将看中断 6 的中断类型设置为看中断 6 的自动中断类型。手动则要求你手动配置。 另外,看中断向量表,看中断优先级,看中断向量表。
比如看中断 6 向量表,看中断优先级,看中断向量表。
看中断 6 向量表里还有个“自动”选项,这个在 STM32F103 里比较特殊,一般是看中断 3 中的自动。
看中断 6 中断向量表,看中断优先级,看中断向量表。
这个选项指的是看中断 6 的中断形成方式,若选自动,则形成中断时自动配置看中断 6 的中断状态为中断突形成,且自动将看中断 6 的中断类型设置为看中断 6 的自动中断类型。手动则要求你手动配置。 软件局部,看中断向量表,看中断优先级,看中断向量表。
看中断 6 中断向量表,看中断优先级,看中断向量表。
看中断 6 中断向量表里有个“自动”选项,这个在 STM32F103 里比较特殊,一般是看中断 3 中的自动。
看中断 6 中断向量表,看中断优先级,看中断向量表。
这个选项指的是看中断 6 的中断形成方式,若选自动,则形成中断时自动配置看中断 6 的中断状态为中断突形成,且自动将看中断 6 的中断类型设置为看中断 6 的自动中断类型。手动则要求你手动配置。 总而言之,别急着上代码,先把寄存器配置对,看中断向量表对,时钟源定好,中间状态确认无误。
那些红色的报错信息,别光看,尽量自己先绕进去看看缘由。STM32F103 是个好工具,但把它当玩具玩好办出 bug。多敲键盘,多读文档,别光看网页上的示意图。调试完一个项目,下次再碰它,手感就回来了。
相关标签:

猜你喜欢

热门阅读

  • 赖柴尔定理-赖柴尔定理
  • 迪拜哪个国家的城市?-迪拜在哪国城市
  • 李毅吧番号及出处-李毅吧番号及出处
  • 贴春联的由来简介50字-春联由来简述
  • 思乡的名言和出处-思乡名言及出处

其他分站