#include
GPIO_TypeDef* io_led=GPIOC;
const u16 pin_led=GPIO_Pin_1;
static __IO uint32_t TimingDelay;
void Led_Init()
{
GPIO_InitTypeDef GPIO_init_l;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
GPIO_init_l.GPIO_Pin=GPIO_Pin_1;
GPIO_init_l.GPIO_Mode=GPIO_Mode_OUT;
GPIO_init_l.GPIO_OType=GPIO_OType_PP;
GPIO_init_l.GPIO_Speed=GPIO_Speed_100MHz;
GPIO_init_l.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC,&GPIO_init_l);
}
void TimingDelay_Decrement()
{
if(TimingDelay!=0x00)
{
TimingDelay--;
}
}
void Delay(__IO uint32_t ntime)
{
TimingDelay=ntime;
while(TimingDelay!=0);
}
int main(void)
{
Led_Init();
SystemInit();
if(SysTick_Config(SystemCoreClock / 1000))
{
while(1);
}
while(1)
{
io_led->ODR^=pin_led;
Delay(500);
}
}
extern void TimingDelay_Decrement(void);
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
//中断函数,放在stm32f4xx_it.c中
关键字:STM32F407 Systick中断
引用地址:
STM32F407学习笔记——Systick中断
推荐阅读最新更新时间:2024-03-16 16:19
我该选择哪一个?DSP与DSP功能的ARM
最近在工控领域里的一个项目,看到前期的工程设计人员设计了 Cortex-M3 微处理器 与TI DSP 的搭档来完成整个项目。“为什么不使用 Cortex-M4 的内核?”这个疑问就立刻蹦了出来。今天仔细查询了一下,做个简单的对比,供广大的网友们参考。 上面只是简单提到了几点。3倍于 DSP 的主频频率使得 STM32F407 在一定程序上弥补了在处理浮点运算的不足,而较便宜的价格,不仅使得项目的总成本大幅节省,也便得有 ARM 开发基础的工程师们更容易操控 DSP 的算法。 毕竟是工业控制领域的应用, Cortex-M4 还能充分发挥其过程控制的优势,丰富的IO引脚及兼容的5v TTL电平与外
[嵌入式]
STM32F407使用USB作虚拟串口出现黄感叹号
最近因为工作需要使用到了STM32F407VET6的USB_OTG_FS作为虚拟串口。 之前用STM32 CubeMX生成过STM32F103C8T6的虚拟串口代码,感觉用起来很方便,于是这次的F407也用MX生产工程,奈何竟然遇到诸多难题,整整困扰了两天。 先说一下我的流程。 MX生成F407 USB虚拟串口工程操作流程 1,选择芯片 先是利用条件筛选选择自己的芯片,如下图: 2,配置管脚 配置RCC输入脚,SYS调试口以及USB_OTG_FS,USB_OTG_FS– Device Only– Comunication Device Class,个人喜欢使用FreeRTOS。配置如下图: 3,配置时钟 用的8M外部晶
[单片机]
STM32F407 之 高级定时器功能描述
主要介绍下自己用到的一些功能 1、时基单元 主要包括: ● 计数器寄存器 (TIMx_CNT) ● 预分频器寄存器 (TIMx_PSC) ● 自动重载寄存器 (TIMx_ARR) ● 重复计数器寄存器 (TIMx_RCR) 预分频器说明:预分频器可对计数器时钟频率进行分频,分频系数介于 1 和 65536 之间。该预分频器基于TIMx_PSC 寄存器中的 16 位寄存器所控制的 16 位计数 器。由于该控制寄存器具有缓冲功能,因此可对预分频器进行实时更改。而新的预分频比将在下一更新事件发生时被采用。 2、计数器模式:递增、递减、中央对齐模式(递增、递减) 1)递增计数模式(向上计数模式):计数器从 0 计数到自动重载
[单片机]
stm32f407引脚相关配置
stm32f407的IO口可由软件配置成8种模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽输出、推挽式复用功能、开漏式复用功能。 下列分别是GPIOx常用配置相关的寄存器: 1、MODER寄存器(端口模式) 32位寄存器,每两位控制一个IO口的模式,总共16组。00:输入、01:通用输出模式、10、复用功能模式、11:模拟模式,该寄存器在复位后,一般都是0,也就是默认条件下一般是输入状态。 2、OTYPER寄存器(输出类型) 32位寄存器,高16位保留,必须保持复位值,低16位,每位控制一个IO口输出类型。0:输出推挽、1:输出开漏,该寄存器仅用于输出模式,复位后各位为0,默认输出类型是推挽输出。 3、OSPEEDR
[单片机]
基于STM32F407的bootloader、IAP、Flash_APP、上位机设计(二)
第二部分:Flash_App设计 前期准备: 一、硬件:STM32F407VET6板一块,IAP使用串口通信,板上需引出串口或有DB9接口都行(如果不使用串口,使用其他协议均可)。 二、软件:KEIL4.73版本,关于IAP读写FLASH的源代码是使用战舰的源码,共有iap、stmflash、sys等文件,上位机软件设计使用QT5.5。 工作开始: 三、Flash_App工程中有几个需要修改的地方。 (1):Target里面IROM1,Start修改为0X8010000,这个和Bootload的#define FLASH_APP1_ADDR 0x08010000 一致,Size修改为0xF0000,代
[单片机]
STM32F407——电子评分器
#main.c #include sys.h #include delay.h #include usart.h #include led.h //#include beep.h //#include key.h #include exti.h extern u8 great,fine,bad,num; extern float Average,Percent; int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断分组 delay_init(168); //初始化延时函数 uar
[单片机]
cubemx+stm32f407+双Can通信
最近几天在用CUBEMX实现stm32f407zgt6的双can通讯,中间走了一些弯路,记录下来供需要的人参考借鉴,希望可以帮助大家节省开发周期。 准备工作: 一、硬件 使用启明高配版开发板,因为启明的板子上有两个can可以使用,在调试之前,需要先将can1_H连接can2_H,can1_L连接can2_L,并且需要将P15和P21跳线帽连接好。 二、软件工具 1.我使用的软件版本是CUBEMX4.27,使用的库为fw_f4_v1210。 2.keil版本 程序编写 can在网上有很多介绍,可以在网上搜索一些基础介绍,之前调试can主要是卡在了新的库包里对滤波器以及FIFO和回
[单片机]
STM32 SysTick中断使用方法
SysTick中断属于核内外设中断器,中断号为-1。想要使用SysTick中断,只需在SysTick查询定时上进行稍微的修改。需要添加开启中断,直接用中断函数对计数标志位进行清零,不再使用查询方式判断计数是否结束去清零。中断函数接口SysTick_Handler在汇编文件中已经给出定义,直接到文件中查找即可。 本来NVIC提供了中断使能的函数,但是要求中断号要大于0(Value cannot be negative.),所以就不能调用NVIC中断使能函数了,直接在操作寄存器开启中断就可以了。 修改如下: #include delay.h #include led.h void Systick_Delayus
[单片机]