一. 了解STM32最小系统核心板(STM32F103C8T6,国际上又统称 STM32 Blue Bill开发板)的电路原理图,用Proteus 设计一个STM32最小系统板+LED流水灯实验原理图,仿真运行。
一、STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等,具体参数如下:
二、最小系统板
或许大家有经常听起过最小系统板这个词儿,那么什么是最小系统板呢?其实最小系统板就是一个最精简的电路,精简到只能维持MCU的最基本的正常工作。最小系统一般由外部复位电路、外部时钟电路以及MCU本体构成,除此之外没有其他诸如蓝牙、外置EEPROM、时钟芯片DS1302、SPI接口显示屏等外接设备。跟STC89C52RC单片机不一样的是,STM32F103C8T6的GPIO有8种模式,其中包含上拉、下拉输入模式,所以外接按钮时可不设计上下拉电阻。根据他的原理图显示:按键KEY0一端接到3.3V的VCC,一端接到PA0引脚。发光二极管LED0一端也同样经1KΩ电阻接到3.3V的VCC,另一端则接到PC13上。因此,想要让二极管发光的话需要让PC13输出低电平。STM32最大工作电压3.6V,使用了LDO(低压差线性稳压器)将输入电压VIN降到3.3v给微控制器供电。3.3V和GND之间的4个0.1uf的旁路电容(去除高频交流信号)接到了芯片的4个VDD和4个VSS上。最小开发板引脚图如下:
三、用Proteus 设计一个STM32最小系统板+LED流水灯实验原理图,仿真运行。
1.keil编写
点击project,选择new μvision project,创建工程名为lsd,点击保存,点击保存然后弹出的芯片选择,我们选择芯片STM32F103RB,然后点击ok。
我们再进行选择,对相应选项进行勾选,之后点击“OK"
工程创建完毕,开始创建源文件,点击file,选择new,写入代码,代码如下:
#include “stm32f10x.h”
GPIO_InitTypeDef GPIO_InitStructure;
void delay_ms(uint32_t ms)
{
uint32_t i_cnt,j_cnt;
for(i_cnt=0;i_cnt<3000;i_cnt++);
for(j_cnt=0;j_cnt<ms;j_cnt++);
}
uint32_t i;
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIOC->BSRR=0xff;
while (1)
{
for(i=0;i<8;i++)
{
delay_ms(99000);
GPIOC->BRR=(1<<i);
delay_ms(99000);
GPIOC->BSRR=(1<<i);
}
for(i=0;i<8;i++)
{
delay_ms(99000);
GPIOC->BRR=0x000000ff;
delay_ms(99000);
GPIOC->BSRR=0x000000ff;
}
}
}
点击保存,这里的名称后缀必须是是.c。右键点击左侧project窗口的source Group1,选择相应的选项把.c文件添加到工程里。
添加成功
右键中选择Option for Target,然后勾选Create HEX file,编译生成hex文件。
2.Proteus仿真
点击创建新工程,输入工程名、安装路径,选择从选中的模板中创建原理图(DEFAULT),选择不创建PCB布版设计,选择创建固件项目,其中:系列选择Cortex-M3,Controller选择STM32F103R6,点击下一步。
点击完成,即可创建成功。
添加实验所需元件灯,点击左上角“P”字图标,输入LED-GREEN,并点击确认选中;添加实验所需电阻,点击左边P,然后进入下图,在关键字中输入RES,并点击确认选中。将灯和电阻分别添加到原理图,然后右键电阻,编辑电阻,设置其阻值为50。原理图如下:
二. 以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只_(或更多)红绿蓝LED 搭建电路,使用GPIOA、GPIOB、GPIOC这3个端口控制LED灯,轮流闪烁,间隔时长1秒。
1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数;
两个32位的配置寄存器:GPIOx_CRL、GPIOx_CRH
两个32位数据寄存器:GPIOx_IDR、GPIOx_ODR
一个32位的置位/复位寄存器:GPIOx_BSRR
一个16位复位寄存器:GPIOx_BRR
一个32位锁定寄存器:GPIOx_LCKR
GPIO (General Purpose Input/Output) 端口的寄存器地址和详细参数通常是特定于微控制器或处理器的。
GPIOx寄存器组:
在STM32中,每个GPIO端口都有一个对应的寄存器组,用于控制该端口的各种功能。GPIOA、GPIOB、GPIOC 等代表不同的端口。
GPIOx_CRH 和 GPIOx_CRL 寄存器:配置端口的通用配置,如输入/输出模式、输出速度、上拉/下拉等。
GPIOx_ODR 寄存器: