完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本实验基于STM32CubeMX实现对STM32开发板的配置,通过定时器中断实现 LED 闪烁。
1. 软件与硬件 1.1 硬件要求 (1)ALIENTEK ELITE STM32F103 开发板 (STM32F103ZET6 芯片) (2)USB转TTL 模块 1.2 软件要求 (1)Java Runtime Environment (JRE) 1.8.0 版本 (2)STM32CubeMX 5.6.1 版本 (3)IAR Embedded Workbench 8.0 (4)串口调试工具 2. STM32CubeMX配置开发板 LED 0:PB5 LED 1:PE5 USART1_TX:PA9 USART1_RX:PA10 2.1 Pinout & Configuration (1)RCC 配置 (2)GPIO 配置 (3)NICV 配置 (4)SYS 配置 (5)Timers 配置 (6)USART1 配置 2.2 Clock Configuration 2.3 Project Manager 3. 程序代码 3.1 usart.c 实现printf的重定向 /* USER CODE BEGIN 0 */ /****************************************************************** *@brief Retargets the C library printf function to the USART. *@param None *@retval None ******************************************************************/ #include "stdio.h" #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int _io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__*/ PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); return ch; } /* USER CODE END 0 */ 3.2 main.c (1)添加头文件 /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include #include /* USER CODE END Includes */ (2)主函数中开启定时器中断 /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim2); /* USER CODE END 2 */ (3)中断回调函数中反转 LED 状态 /* USER CODE BEGIN 4 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { static unsigned char ledState = 0; if (htim == (&htim2)) { if (ledState == 0) HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET); else HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET); ledState = !ledState; } } /* USER CODE END 4 */ 4. 程序分析 4.1 定时器中断逻辑 4.2 定时器周期 本实验的时钟频率为72MHz,由此可知,时钟周期为1/72MHz Tclk:时钟频率 Tout :定时器周期 不太官方的理解,有错欢迎指正: (Prescaler+1)x 1/Tclk 可理解为一次计数的时间,(Counter Period +1) 可理解为总的计数次数, 则不难理解,定时器周期 = 一次计数时间 x 总的计数次数。通过带入参数,可知本实验的定时器周期为 500ms。 4.3 主要函数 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1883 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1661 浏览 1 评论
1146 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
762 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1720 浏览 2 评论
1963浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
790浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
614浏览 3评论
631浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
593浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 03:30 , Processed in 0.775408 second(s), Total 44, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号