2024年2月15日发(作者:)
基于stm32计时器课设代码
针对基于 STM32 的计时器课程设计,可以提供以下参考代码:
1. 使用 LCD1602 显示屏制作倒计时程序的代码示例:
```c
#include "stm32f4xx.h"
#include "llcd.h"
LCD_SetFont(&hfont16);
LCD_SetTextColor(LCD_COLOR_WHITE);
LCD_ClearDisplay();
void delay_ms(uint32_t ms)
{
uint32_t delay = SystemCoreClock / 1000 / 50; //
50Hz 的频率
while (ms--)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_GPIO_PIN_SET(GPIOA, 13);
__HAL_RCC_GPIOA_CLK_DISABLE();
}
}
void TIM2_Init()
{
每毫秒
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sOCInit = {0};
__HAL_RCC_TIM2_CLK_ENABLE();
__HAL_RCC_TIM2_REFRESH_ENABLE();
OutputTrigger = TIM_TRGO_RESET;
SlaveMode = TIM_MASTER_SLAVE_MODE;
OutputTrigger2 = TIM_TRGO2_RESET;
SlaveMode2 = TIM_MASTER_SLAVE_MODE2;
HAL_TIM_MasterConfigCallback(&htim2, TIM_
MastersylizMode);
= TIM_OCMODE_PWM1;
= 0;
rity = TIM_OCPOLARITY_HIGH;
Mode = TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(&htim2, &sOCInit);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
}
void 海螺定时器中断处理函数 (void)
{
HAL_TIM_PeriodElapsedCallback(htim2,
HAL_TIM_PERIODELIGIBLE_中断);
}
int main(void)
{
HAL_Init();
LCD_Init();
TIM_Init();
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
while (1)
{
}
}
```
2. 使用按键按下数码管自动倒计时的代码示例:
```c
#include "stm32f4xx.h"
#include "lcm.h"
#define KEY_WIDTH 12
#define KEY_HEIGHT 14
#define 数码管引脚编号 GPIOA->IDR
#define 按键引脚编号 GPIOA->ODR
#define 时钟频率 SystemCoreClock
LCD_ClearDisplay();
LCD_SetTextColor(LCD_COLOR_WHITE);
LCD_SetFont(&hfont16);
void delay_ms(uint32_t ms)
{
uint32_t delay = SystemCoreClock / 1000 / 50; // 每毫秒
50Hz 的频率
while (ms--)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_GPIO_PIN_SET(GPIOA, 11);
__HAL_RCC_GPIOA_CLK_DISABLE();
}
}
void LCD_DrawString(LCD_SCREEN* screen, const char* str,
uint32_t x, uint32_t y)
{
uint32_t charsize = 2;
uint32_t maxlen = 2;
for (uint32_t i = 0; i < strlen(str); i++)
{
uint32_t px = x;
uint32_t py = y + charsize * i / maxlen;
uint32_t ln = x + charsize * 2 + charsize;
uint32_t col = i % 26;
screen->Scr[px][py] = 0;
if (col < 26)
{
。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1707992162a1534208.html
评论列表(0条)