基于stm32计时器课设代码

基于stm32计时器课设代码


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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信