为了方便调试,重定向printf,进行usart设置
1——点击USART1进行设置
2——模式选择Asynchronous异步传输
3——可以看到右边自动出现了Tx和Rx
4——可以自行设置波特率,停止位,校验位等参数
1——点击Clock Configuration进行设置
2——注意这几个地方的时钟(后面进行分频设置的时候需要)
点击TIM1进行设置
1——时钟源Clock Source选择Intemal Clock
2——预分频选择36000-1也就是35999(注意16位最大只能表示65535)
3——自动重装载值设置为2000-1也就是1999
讲解:定时器更新中断的频率=时钟频率/(预分频+1)/(自动重装载值+1)
即 :72000000/36000/2000=1(HZ),也就是每秒进一次中断
在NVIC Setting里面勾选TIM1 update interrupt
代码修改
1——选择main.c文件
2——在USER CODE中添加如下代码,重定向printf
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xFFFF);
return ch;
}
在主函数中添加如下代码启动定时器
重写中断函数,打印"123456",即每秒打印一次
烧录代码后打开出口调试助手,正确的话会看到如下输出
关键字:STM32CubeMX Keil5 定时器中断
引用地址:
STM32CubeMX(Keil5)开发之路——5定时器中断TIM
推荐阅读最新更新时间:2024-03-16 16:26
单片机学习笔记外部中断,定时器,串口中断
CPU收到中断请求,停下正在处理的工作A,去处理事件B,处理完后继续回到中断的地方继续执行事件A的过程,称为中断 51有5个中断源 外部中断0 定时计数中断0 外部中断1 定时继续中断1 串口中断 MCS-51单片机中断系统的结构: 5个中断源的符号、名称及产生的条件如下。 INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。
[单片机]
玩转STM32CubeMX | SPI总线
1.SPI总线及W25QXX芯片 1.1 SPI总线简介 SPI全称Serial Peripheral Interface,即串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的、全双工、同步通讯总线,在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局节省空间提供了方便,正是这种简单易用的特性,如今越来越多的芯片集成了这种通讯协议。下图是SPI内部结构简易图 从上图可以看出,主设备和从设备都有一个串行移位寄存器,主设备通过向它的SPI串行寄存器写入一个字节来发起
[单片机]
STM32CubeMX | 40 - 实时时钟RTC的使用(日历和闹钟)
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的 RTC 外设。 1. 准备工作 硬件准备 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码。 2.生成MDK工程 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时钟源 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC; 如果使用默认内部时钟(HSI),这一步可以略过; 这里我都使用外部时钟: 配置串口 开发板板载了
[单片机]
STM32定时器中断实验
STM32的定时器功能十分强大,有TIME1和TIME8等高级定时器,也有TIME2~TIME5等通用定时器,还有TIME6和TIME7等基本定时器。接下来将主要讲述难度适中的通用定时器。 下面以TIM3为例讲解实现定时器中断的每一个步骤: 1、TIM3时钟使能。 TIM3是悬挂在APB1之下,所以应该调用RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);实现时钟使能。 2、初始化定时器参数,设置自动重装值,分频系数,技术方式等。 打开库函数可以发现定时器的初始化是通过初始化函数void TIM_TimeBaseInit来实现的: void TIM_TimeBaseIn
[单片机]
ARM学习《八》——STM32定时器配置及其中断设置!
好久没有写东西了,工作太忙都快没时间学习了。今天调试了STM32的定时器功能,STM32定时器比较多,但调试都是一样的,寄存器都是一一对应的。就拿TIM2举例说明。在网上搜了好多关于定时器的设置,但大多数都是一个版本,而且都是针对库函数操作的,让人看起来一头雾水,对于初学者很是不利(我也是初学者)。下面我将自己的定时器设置过程一一记录下来,以供大家参考,我们共同学习 首先定义定时器头文件,也就是定义寄存器以供操作: //************************************************************************* // // TIM2-Register //
[单片机]
STM32开发笔记18: STM32CubeMX中Debug Serial Wire的设置问题
单片机型号:STM32L053R8T6 使用STM32CubeMX时,可发现在SYS下,有Debug Serial Wire选项,如下图所示。 使能该选项后,相应的IO引脚,会变为调试引脚,如下图所示。 最初,认为必须选中该选项才能对STM32进行仿真调试,今天调试时,忽略了该选项,发现仿真调试依然正常,并不受影响。也就是说,勾选该选项与否,都可以进行仿真调试,那么该选项的作用时什么呢? 答案:将其显示指定为调试引脚,不可当作其它功能复用,如果将该引脚用做其它功能,则不再具有仿真功能。另外,再补充一点,我在项目中,由于引脚数目有限,将SWDIO复用为IO口使用,使用NUCLEO自带的仿真
[单片机]
STM32CubeMX(Keil5)开发之路——7输出PWM
运行环境 Windows10 STM32CubeMX___Version 5.0.0 Keil5(MDK5)___Version 5.15 简介 本例程主要讲解如何设置PWM这只输出4路PWM信号 STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—配置第一个项目 STM32CubeMx PWM配置 1——点击TIM2进行设置 2——4个Channel都选择 “PWM Generation CHx” 选项 3——预分频值填72-1即71 4——自动重装载值设置为100-1也就是99 5——会看到相应的输出管脚PA0——PA3就是PWM的输出管脚 讲解:PWM波的频率=时钟频率/
[单片机]
使用stm32CubeMX自动配置的工程文件,进行串口的不定长接收
方法描述:使用stm32CubeMX自动配置的工程文件,进行串口的不定长接收(非DMA方式)。 实际问题解决尝试: 1.HAL库函数只有接收定长数据HAL_UART_Receive()和HAL_UART_Receive_IT();函数声明如下: 通过查看论坛等找到的解决方式,一种是通过HAL_UART_Receive_IT(&huart1,(uint8_t *)buffer,1);来进入串口中断回调函数HAL_UART_RxCpltCallback();函数原型如下: 实际测试中,这种方式每次都需要去调用HAL_UART_Receive_IT函数,系统处理效率低。 2.通过审查生成的代码,如下所
[单片机]