1.创建工程
1.点击创建新工程,输入工程名、安装路径。
2.选择从选中的模板中创建原理图(DEFAULT)
3.选择不创建PCB布版设计
4.选择创建固件项目,其中:系列选择Cortex-M3,Controller选择STM32F103R6,点击下一步,然后创建成功
2.配置实验所需元件
1.创建项目完成后就如下图所示,显示出自己所选的型号,STM32F103R6,系统并以配置好电源,连接电路如下,我们选用C0-C7端口,总共8个,如下图所示:
3.进入keil 5中生成hex文件
2.程序代码如下(程序实现要求:8个led灯依次闪烁,然后8个灯同时闪烁8次,依次重复)
/*main.c*/
#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 }
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<
delay_ms(99000);
GPIOC->BSRR=(1< }
for(i=0;i<8;i++)
{
delay_ms(99000);
GPIOC->BRR=0x000000ff;
delay_ms(99000);
GPIOC->BSRR=0x000000ff;
}
}
}
4.STM32的配置
1.双击stm32f103r6芯片,然后进入Program File 选择刚才生成的hex文件,并配置Crystal Frequency改成8M(设置晶振为8M)
5.实验结果
GIF演示如下:
关键字:Proteus 仿真实验 STM32 流水灯
引用地址:
Proteus仿真实验之STM32流水灯
推荐阅读最新更新时间:2024-11-11 15:01
16-基于单片机的心形流水灯
具体实现功能 系统由STC89C51/52单片机+按键模块+LED灯模块+电源构成。 具体功能: (1)至少10个发光管4种花样自动变换,循环往复; (2)彩灯花样变换的快慢节拍可以手动和自动方式控制,手动控制按钮按一次转换一次;自动控制方式每15秒变换一次,1分钟循环一遍; (3)系统复位清零开关。 设计背景 霓虹灯是城市的美容师,每当夜幕降临时,华灯初上,五颜六色的霓虹灯就把城市装扮得格外美丽。LED数码灯带采用全新的结构和专有技术,主体由高亮度发光二极管(简称LED)通过特殊的专利结构进行连接,运用特有的光学技术与专有的包覆层设计而形成。主要特性是节能、环保、防震、防水,其最大的特点就是发光均匀,360度
[单片机]
STM32中USART的使用方法
USART作为一种标准接口在应用中十分常见。本文着重分析其作为UART的配置和应用方法。 1、STM32固件库使用外围设备的主要思路 在STM32中,外围设备的配置思路比较固定。首先是使能相关的时钟,一方面是设备本身的时钟,另一方面如果设备通过IO口输出还需要使能IO口的时钟;最后如果对应的IO口是复用功能的IO口,则还必须使能AFIO的时钟。 其次是配置GPIO,GPIO的各种属性由硬件手册的AFIO一章详细规定,较为简单。 接着相关设备需要如果需要使用中断功能,必须先配置中断优先级,后文详述。 然后是配置外围设备的相关属性,视具体设备而定,如果设备需要使用中断方式,必须使能相应设备的中断,之后需要使能相关设备。 最后如
[单片机]
ARM开发(1) 基于stm32的led跑马灯
一 跑马灯原理: 1.1 本实验实现2个led的跑马灯效果,即2个led交替闪烁。 1.2 实验思路:根据电路图原理,给led相关引脚赋予高低电平,实现电路的导通,使led灯发光。 1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 二 实验步骤: 2.1 led.h代码: #ifndef __LED_H #define __LED_H “#include “sys.h” #define LED0 PBout(5)// PB5 #define LED1 PEout(5)// PE5 void LED_Init(void);// 初始化 #endif 2.2 led.c代码(IO配置):
[单片机]
stm32 嵌套向量中断控制器NVIC
嵌套向量中断控制器(NVIC)和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效地处理晚到的中断。 嵌套向量中断控制器管理着包括内核异常等中断 NVIC 相关的函数包含在 misc.c 文件中 void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup) void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset) void NVIC_SystemLPConfig(uint8_t LowPower
[单片机]
一种基于STM32的智能采油控制系统的设计与实现
1、引言 近年来随着国内各个油田的生产井的持续开采进行,生产井到了开采的中后期普遍出现了产量低、地层供液能力下降、泵效低电能损耗大等问题。从2014年开始国际油价出现了雪崩式下跌,国内各大油企无法盈利甚至出现亏损,之前油田企业粗放式的管理与生产模式早已无法适应当前的国际石油环境。游梁式有杆泵采油方法以其结构简单、适应性强和寿命长等特点,成为目前最主要的机械采油方法,但是目前采油控制系统不能根据实际地层供液能力进行相应的调整,当抽汲速率大于供液能力时会出现泵效低、甚至造成设备损耗。目前各个油田针对地层供液不足生产井根据经验制定间抽生产制度,这种做法在一定程度上提高了采油效率减少了能源消耗,但是并不没有实现实时性与智能性。 本文针
[单片机]
STM32的优先级NVIC_PriorityGroupConfig的理解及其使用
写作原由:因为之前有对stm32 优先级做过研究,但是没时间把整理的东西发表,最近项目需要2个串口,但是不是两个串口同时使用,只是随机使用其中一个,程序对2个串口的优先级需要配置; 此文思路:“中断优先级”思维导图-- 关键要点--- 结合图和要点相关程序应用例程讲解; 我们先来看ST公司的一张图: 我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮 放大看;) 前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0 NVIC_PriorityGroup_1 NVIC_PriorityGroup_2 NVIC_PriorityGroup
[单片机]
STM32中断优先级彻底讲解
看了一早上资料终于把STM32中断优先级搞懂了, 现在与大家分享: 一:综述 STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级 的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。 二:优先级判断 STM32(Cortex-M3)中有两个优先级的概念 抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式
[单片机]
STM32学习笔记之 DS18B20 SEARCH ROM
使用说明,根据MCU不同 用户只需修改4函数 //单总线复位函数 int OWReset(); 单线总线的复位函数,注意这个要做相应修改,如果期间存在要返回1,期间不存在返回0, 直接从总线上读取的是期间存在返回0,不存在返回1 //向总线发送一个字节 void OWWriteByte(unsigned char dat); //向总线发送一位 void OWWriteBit(unsigned char bit_value); //读取总线一位 unsigned char OWReadBit(); 使用时用 int OWFirst();发现第一个单线器件 如果期间存在返回1,并且把ID存在 unsigned char
[单片机]