WeChat:【嵌入式工程师成长日记】
具体功能实现:
利用STM32F103C8T6实现LED流水灯
使用器件:
8只LED灯、导线若干、stm32f103c8t6、ST-LINK下载器,面包板
仿真原理图及测试:
仿真原理图
仿真
知识介绍
STM32F103C8T6
主要优势在于,封装体积小,价格与家族其他芯片相比较低、相比8位单片机性能更优,如果会使用STM32系列芯片,可做为替代方案、性价比较高、而且可以满足小项目和初学的需求。
■ 内核:ARM32位Cortex™-M3 内核
最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz (Dhrystone2.1) − 单周期乘法和硬件除法
■ 低功耗
− 睡眠、停机和待机模式
− VBAT为RTC和后备寄存器供电
■ 多达80个快速I/O端口
− 26/37/51/80个I/O口,所有I/O口可以映像到16个外部中断;几乎所有端口均可承受5V信号
ST-LINK下载接线图:
代码介绍及配置:
以上是固定代码,我们选择的是GPIOA口进行输出,接下来解释一下GPIO配置:
GPIO_MODE:
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
GPIO_SPEED:
GPIO_Speed_10MHz 最高输出速率10MHz
GPIO_Speed_2MHz 最高输出速率2MHz
GPIO_Speed_50MHz 最高输出速率50MHz
主要代码(C语言)KEIL5实现:
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while (1)
{
GPIO_Write(GPIOA, ~0x0001); //0000 0000 0000 0001
Delay_ms(100);
GPIO_Write(GPIOA, ~0x0002); //0000 0000 0000 0010
Delay_ms(100);
GPIO_Write(GPIOA, ~0x0004); //0000 0000 0000 0100
Delay_ms(100);
GPIO_Write(GPIOA, ~0x0008); //0000 0000 0000 1000
Delay_ms(100);
GPIO_Write(GPIOA, ~0x0010); //0000 0000 0001 0000
Delay_ms(100);
GPIO_Write(GPIOA, ~0x0020); //0000 0000 0010 0000
Delay_ms(100);
GPIO_Write(GPIOA, ~0x0040); //0000 0000 0100 0000
Delay_ms(100);
GPIO_Write(GPIOA, ~0x0080); //0000 0000 1000 0000
Delay_ms(100);
}
}
问题解答:
Q:连接ST-LINK后如何进KEIL5进行烧录
A:点击图标LOAD,可能会弹出对话框,选择“no”,随后hex文件就会直接烧录进单片机。完成后按下单片机上的复位按钮即可运行。