一. Experiment Name:The running light experiment

二. Development steps:


1.我们做的是跑马灯实验。所以首先确定与灯连接的GPIO引脚是那一个,是那组GPIO引脚。
2.这次跑马灯,灯会一亮一灭,所以的设置定时器(这里不用delay()函数,感觉这函数用的不专业)。
3.设置定时器,定时器就会溢出,所以还需要设置与定时器相关的中断,以及中断服务函数。
三. Software and hardware used:
1.keil
2.Development board
3.The emulator
4.Two USB data cables
5.The simulation line
四. Functions and registers related to serial port operation:

五, logical analysis:

1.因为我们主要是初始化ARR,PSC。所以我们就把初始化函数的参数设置为他们两个。
为什么定义为u16呢?
(老师说这儿的定时器是16位的,所以这样设置)
ARR,PSC这两个是定时器的寄存器。



2.
无论什么代码都要记住使能和初始化函数。

void TIM3_Int_Init(u16 arr, u16 psc){NVIC_InitTypeDef NVIC_InitStruce;TIM_TimeBaseInitTypeDef TIM_TimeBaseInitSture;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//初始化定时器TIM_TimeBaseInitSture.TIM_ClockDivision=TIM_CKD_DIV1;//这个与本实验无关,随便选一个TIM_TimeBaseInitSture.TIM_CounterMode=TIM_CounterMode_Up;//计数模式TIM_TimeBaseInitSture.TIM_Period=arr;//自动装载值TIM_TimeBaseInitSture.TIM_Prescaler=psc;//预分频值TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitSture);//使能定时器中断,使能定时器那种中断(TIM_IT_Update)TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//,设置中断,中断优先级分组NVIC_InitStruce.NVIC_IRQChannel=TIM3_IRQn;//TIM3中断NVIC_InitStruce.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能NVIC_InitStruce.NVIC_IRQChannelPreemptionPriority=0;//先占优先级0级NVIC_InitStruce.NVIC_IRQChannelSubPriority=3;//从优先级3级NVIC_Init(&NVIC_InitStruce);//使能定时器TIM_Cmd(TIM3,ENABLE);}void TIM3_IRQHandler(void){if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET){LED1 = !LED1 ;TIM_ClearITPendingBit(TIM3,TIM_IT_Update);}}

六. Code display:

main

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"/************************************************ALIENTEK战舰STM32开发板实验1跑马灯实验 技术支持:www.openedv.com淘宝店铺:http://eboard.taobao.com 关注微信公众平台微信号:"正点原子",免费获取STM32资料。广州市星翼电子科技有限公司  作者:正点原子 @ALIENTEK
************************************************/int main(void){    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);delay_Init();//固定操作,没有任何理由TIM3_Int_Init(4999,7199);while(1);}/*******************下面注视的代码是通过调用库函数来实现IO控制的方法*****************************************
int main(void)
{ delay_init();       //初始化延时函数LED_Init();              //初始化LED端口while(1){GPIO_ResetBits(GPIOB,GPIO_Pin_5);  //LED0对应引脚GPIOB.5拉低,亮  等同LED0=0;GPIO_SetBits(GPIOE,GPIO_Pin_5);   //LED1对应引脚GPIOE.5拉高,灭 等同LED1=1;delay_ms(300);          //延时300msGPIO_SetBits(GPIOB,GPIO_Pin_5);    //LED0对应引脚GPIOB.5拉高,灭  等同LED0=1;GPIO_ResetBits(GPIOE,GPIO_Pin_5); //LED1对应引脚GPIOE.5拉低,亮 等同LED1=0;delay_ms(300);                     //延时300ms}
} *******************************************************************************************************//**
*******************下面注释掉的代码是通过 直接操作寄存器 方式实现IO口控制**************************************
int main(void)
{ delay_init();       //初始化延时函数LED_Init();              //初始化LED端口while(1){GPIOB->BRR=GPIO_Pin_5;//LED0亮GPIOE->BSRR=GPIO_Pin_5;//LED1灭delay_ms(300);GPIOB->BSRR=GPIO_Pin_5;//LED0灭GPIOE->BRR=GPIO_Pin_5;//LED1亮delay_ms(300);}}
**************************************************************************************************
**/

timer.h

#ifndef __TIMER_H
#define __TIMER_H#include"sys.h"void TIM3_Int_Init(u16 arr, u16 psc);#endif

timer.c

#include "timer.h"
#include "led.h"void TIM3_Int_Init(u16 arr, u16 psc){NVIC_InitTypeDef NVIC_InitStruce;TIM_TimeBaseInitTypeDef TIM_TimeBaseInitSture;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//初始化定时器TIM_TimeBaseInitSture.TIM_ClockDivision=TIM_CKD_DIV1;//这个与本实验无关,随便选一个TIM_TimeBaseInitSture.TIM_CounterMode=TIM_CounterMode_Up;//计数模式TIM_TimeBaseInitSture.TIM_Period=arr;//自动装载值TIM_TimeBaseInitSture.TIM_Prescaler=psc;//预分频值TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitSture);//使能定时器中断,使能定时器那种中断(TIM_IT_Update)TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//,设置中断,中断优先级分组NVIC_InitStruce.NVIC_IRQChannel=TIM3_IRQn;//TIM3中断NVIC_InitStruce.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能NVIC_InitStruce.NVIC_IRQChannelPreemptionPriority=0;//先占优先级0级NVIC_InitStruce.NVIC_IRQChannelSubPriority=3;//从优先级3级NVIC_Init(&NVIC_InitStruce);//使能定时器TIM_Cmd(TIM3,ENABLE);}void TIM3_IRQHandler(void){if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET){LED1 = !LED1 ;TIM_ClearITPendingBit(TIM3,TIM_IT_Update);}}

七.Other ideas
1…h文件里面一般只存放,函数的声明,和一些宏定义。以及导入一些头文件

STM32F103_study52_The punctual atoms(STM32 The running light experiment )相关推荐

  1. CORDEX(Coordinated Regional Climate Downscaling Experiment )——协调降尺度实验

    CORDEX(Coordinated Regional Climate Downscaling Experiment )--协调降尺度实验 一.区域降尺度 1.1 全球气候模型扫盲 1.2 为什么需要 ...

  2. unity3d学习笔记-光照(5.光照探测器Light Probes)

    一.什么是光照探测器Light Probes? 当您烘焙光照贴图时,您会将光照静态表面的快照存储在场景中.场景中的灯光不会继续在这些表面上投射更多的光.当一个动态对象(如您的球体)通​​过烘焙光时,渲 ...

  3. L298N模块的连接与使用(stm32驱动与51驱动)

    一.L298N的一些基本参数 使用方法: 输出A: 通道A输出 ,连接电机 输出B: 通道B输出 ,连接电机 12V供电: 主电源正极输入 供电GND: 主电源正负极极输入 5V输出: 5v电压输出端 ...

  4. Altium Designer初学者入门(stm32最小系统的电路原理图)

    文章目录 一.创建工程文件 二.原理图库 三.绘制原理图 四.批量生成标号与原理图添加封装 五.编译及查错 一.创建工程文件 1.进入Altium Designer,按照如图所示步骤创建一个PCB工程 ...

  5. Lecture19_相机、透镜与光场(Cameras, Lenses and Light Fields)_GAMES101 课堂笔记

    目录 第一部分:相机成像基本知识 一.Pinhole Image Formation(针孔的图像形成) 二.Field of View (视场,FOV) 第二部分:Exposure(曝光) 一.ISO ...

  6. BH1750的一些使用心得(STM32,内置工程)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.BH1750是什么? 二.如何使用BH1750 2.1 BH1750的通信方式 2.2 BH1750的指令集 2.3 ...

  7. stlink下载调试器使用说明(STM32采用stlink下载程序)

    stlink能干什么?  最基本的功能:下载程序.  一般STM32支持ISP串口下载,也支持stlink.jlink等下载器下载 . 使用stlink.jlink下载要比串口方便很多,在keil里直 ...

  8. Linux嵌入式驱动开发零基础入门集合(STM32过渡到Linux嵌入式)

    Linux嵌入式驱动开发01--第一个驱动Hello World(附源码) Linux嵌入式驱动开发02--驱动编译到内核 Linux嵌入式驱动开发03--杂项设备驱动(附源码) Linux嵌入式驱动 ...

  9. 因果倒置的实验名称是“延迟实验”(Wheeler's delayed choice experiment)

    Wheeler's delayed choice experiment 转载于:https://www.cnblogs.com/pootow/archive/2009/10/25/1589639.ht ...

  10. 人工智能数据集(资源篇)(更新于2020.11.27)

    收藏:全网最大机器学习数据集,视觉.NLP.音频都在这了 280万分割掩码,谷歌Open Images数据集再更新 从图像中检测和识别表格,北航&微软提出新型数据集TableBank 人类穿着 ...

最新文章

  1. 互换两个变量,不使用中间变量
  2. 怎么修改与服务器的操作系统,怎么修改与服务器的操作系统
  3. 中国3G标准开始欧洲征程 中兴通讯先拔头筹
  4. OpenGL百分比更紧密过滤
  5. 玻璃体浑浊的分子原理
  6. Spring boot的简单用法
  7. controller中执行main方法报错NoClassDefFoundError: javax/servlet/http/HttpServletResponse
  8. rabbitmq延迟队列相关
  9. 坐地起价、山寨横行、人身骚扰:割韭菜的刀,还是“搬家公司”快
  10. mysql sql注入怎么获取数据_手把手教你通过SQL注入盗取数据库信息
  11. Mac下安装Fiddler抓包工具(别试了,会报错,没办法使用)
  12. html怎么做小米logo,案例:纯CSS小米logo样式
  13. 五类IP地址范围及作用
  14. 解决华为手机无法使用Android StudioUSB调试功能
  15. 【新手必看】全网最全平面设计理论基础知识,平面设计重要理论
  16. 使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群
  17. Tensorflow-saver模型参数保存及载入
  18. SpringCloud Netflix-Eureka使用
  19. 金属与氧气、酸的反应
  20. win10显示未连接到网络,但是任然可以上网

热门文章

  1. 【Linux】kibana安装与使用教程
  2. excel电子表格发展历史
  3. 服务器系统漏洞修补记录,服务器安全狗之系统漏洞修复教程与实例
  4. ElasticSearch高级功能的使用(模版查询、地理位置查询等)
  5. Magento给Newsletter Subscribers添加状态选项(默认只有Not Activated,Subscribed,Unsubscribed,Unconfirmed)
  6. 安卓双摄像头录像_USB双摄像头app下载-USB双摄像头 安卓版v9.9.1-PC6安卓网
  7. 火车头采集html文档没内容,火车头采集器:编辑任务中常见问题
  8. Array Shrinking(CodeForces - 1312E )
  9. app系统软件开发外包的费用:开发app多少钱的费用?
  10. 51nod1007:正整数分组 DP