led.c

#include "led.h"

void LED_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
} void LED_Toggle(void)
{
GPIOB->ODR ^= GPIO_Pin_0;
}

led.h

#ifndef __LED_H
#define __LED_H #include "stm32f10x.h" void LED_Config(void);
void LED_Toggle(void); #endif

tim_timebase.c

#include "tim_timebase.h"
#include "led.h" int a = 0; static void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStruct; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStruct.NVIC_IRQChannel=TIM3_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStruct);
} void TIM3_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; NVIC_Config(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseInitStruct.TIM_Period=71;
TIM_TimeBaseInitStruct.TIM_Prescaler=1000;//1ms
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct); TIM_ClearFlag(TIM3, TIM_FLAG_Update); TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); TIM_Cmd(TIM3, ENABLE);
} void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3, TIM_IT_Update)) a++;
if(a == 1000)
{
LED_Toggle();
a = 0;
}
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}

tim_timebase.h

#ifndef __TIM_TIMEBASE_H
#define __TIM_TIMEBASE_H #include "stm32f10x.h" void TIM3_Config(void); #endif

main.c

#include "stm32f10x.h"
#include "led.h"
#include "tim_timebase.h" int main(void)
{
LED_Config();
TIM3_Config(); while(1)
{ }
}

最新文章

  1. Guava学习笔记:Preconditions优雅的检验参数
  2. Android -- ActivityLifeCycleCallbacks
  3. Datasets for Data Mining and Data Science
  4. 2016 Hunan Province Programming Contest
  5. Solr + Hadoop = Big Data Love
  6. 纯CSS绘制三角形
  7. OptiScroll 公共例子(只修改了滚动条颜色)
  8. trove最新命令简单分类解析
  9. SVN使用指引(Windows)
  10. TensorFlow从1到2(一)续讲从锅炉工到AI专家
  11. centos7下vim8.1的编译安装教程
  12. git 随笔
  13. JavaScript--事件对象(25)
  14. 【第五课】LNMP环境的入门
  15. mysql 创建表单
  16. oracle tnsnames.ora文件用法说明
  17. MYSQL COST optimizer
  18. 在python中逐行读取大文件
  19. Android开发,布局xml文件命名注意事项——不能包含任何大写字母
  20. 【BZOJ】1188 [HNOI2007]分裂游戏

热门文章

  1. Handler机制与生产者消费者模式
  2. 使用EF Core更新与修改生产数据库
  3. Spring bean装配流程和三级缓存
  4. 2022-08-12-esp32把玩记-②_用Micropython点ssd1306_oled屏幕
  5. ubuntu20.04 利用xrandr命令修改多显示器分辨率
  6. 7_vue的数据代理,双向绑定
  7. 43.Permission源码解析和自定义权限类
  8. AgileBoot - 如何集成内置数据库H2和内置Redis
  9. nrf52——DFU升级USB/UART升级方式详解(基于SDK开发例程)
  10. 如何在.NET程序崩溃时自动创建Dump?