一、前言
也是接触32位单片机不久,以前只学习过51,对单片机的组成概念只停留在数据总线,地址总线,ram,rom,各种寄存器,串口,定时器,中断等等。
当接触到32位机的时候,生啃了几天才差不多搞懂了一点基本结构,写一下来加深印象与理解复习。
二、模块概述
核心处理器:Contex-M系列内核(也有其他系列),是单片机的核心,包含了中断控制,调试,运算,总线与总线接口功能的实现电路。
时钟模块:为单片机提供运行时钟,单片机程序运行速率与时钟频率有关。可接入外部时钟频率,也可使用内部时钟。
gpio引脚:把引脚作为单独的模块其实挺奇怪的,但是32位机的引脚寄存器配置,以及arm的架构,还是让我把引脚单独看成模块了。可配置相关寄存器实现不同输入输出模式的选择和使能。
定时计数器:类型不少,基本定时器,只能做定时计数动作,可配置重载与产生中断。通用定时器,好像有比较器,可以输入波形来测量波的频率,也可以配置输出pwm占空比。高级定时器,加了一些死区补偿,互补输出的功能,大多用于驱动电机。
片内flash:程序存储的模块
串口:数据通信方式。
除了以上常见或者说必备的外设模块,还有许多其他外设,比如看门狗,IIC,SPI通信,电源,复位等等,想不起来了,可能有不少漏掉了。
三、引脚复用
单片机引脚资源必然是有限的,不可能在芯片上无限制的添加引脚。所以为了保证各个引脚充分利用,采用了端口复用的方式,让每个io口除了本身拥有的基本gpio功能,还让它复用一个或几个外设的功能引脚,例如将串口通信的rx和tx引脚复用到某个io口上,可以通过配置相关寄存器完成引脚功能的切换。
当然,为了保证灵活性,当我某个需要复用的端口正在被作为普通io口使用时,而硬件线路又没办法修改时,32位单片机还提供了端口重映射功能,让本属于某一端口的复用功能映射到另外的引脚。当然映射不是填空题,而是选择题,重映射可修改的引脚是有规定的,具体查看数据手册,而非随心所欲。
四、单片机程序的烧录运行
首先,程序分两种,一种是名为bootloader的启动程序,一般可以在标准的单片机启动例程函数里有个单片机型号.s的文件,打开后是汇编语言代码。
作用我也不大了解,但就我目前知晓的,它负责启动时的一些初始化配置,包括时钟频率之类的东西,单片机启动后进入bootload初始化系统,之后才跳入main函数执行。
而且,bootload函数好像还和程序烧录下载有关,但目前我还没了解这部分知识,所以也不太清楚。
第二种就是常见的main函数负责单片机整体运行逻辑。