仿照“从51到ARM裸机开发实验(003) AT89C51 GPIO实验”,同样实现这样一种场景:四个按键作为开关、四个LED作为响应,每个开关控制一盏灯,按一次开灯,再按一次关灯。再接入一个蜂鸣和另外两个按键作为音量加和音量减,音量加每按一次蜂鸣器音量增加5%,音量减每按一次音量减少5%。这次将MCU替换成STM32F401VE芯片,属于ARM-Cortex 系列,为Cortex-M4内核。虽然实现相同的场景,但是开发配置和编码方式却大不一样。从电路图可以看出STM32F401VE有五组IO口,分别为PA~PE。每组有16个引脚,Px0~Px15,但Protues仿真图中没有PB11引脚, STM32F401VE的PB11引脚不能当GPIO使用, 同时必须外接2.2uF电容,在仿真图中略去了。每个GPIO模块内,主要包含了寄存器和驱动器,寄存器是一段特殊的存储器,内核可以通过APB总线对寄存器进行读写;驱动器是用来增强信号的驱动能力。STM32为32位单片机,但每组IO端口却只有16个引脚,是因为只用低16位的端口,高16位没有用到。注意:STM32F401VE必须加载.elf、.hex等可执行文件后才能运行仿真,未加载可执行文件时直接运行仿真会报错。
一、仿真电路图设计
Each general-purpose I/O port has four 32-bit configuration registers (GPIOx_MODER,GPIOx_OTYPER, GPIOx_OSPEEDR and GPIOx_PUPDR), two 32-bit data registers(GPIOx_IDR and GPIOx_ODR), a 32-bit set/reset register (GPIOx_BSRR), a 32-bit lockingregister (GPIOx_LCKR) and two 32-bit alternate function selection register (GPIOx_AFRHand GPIOx_AFRL).
|