STM32CubeMX第二篇之跑马灯
发布日期:2021-05-14 11:31:24 浏览次数:18 分类:精选文章

本文共 5687 字,大约阅读时间需要 18 分钟。

STM32Cube���������������������������

������

���������������STM32Cube������������������������������������������������������������������STM32Cube���������������������������������������������������������������������������������������������������������������������������������

������������

���STM32Cube������������������������������������������������������������������������������

  • ������������

    ������STM32Cubeidede���������������STM32���������IDE������������������������������New Project���������

  • ������������������������

    ������������������������������������������������������������������������STM32F429IGT6���������������������������������stdPeriph���������������������������������������������������

  • ������������������

    ���������������������������RCC������������������������������������������HSE���������������������������������������������������������������������������

  • ���������GPIO������

    ������������

  • ������������������

    ������������������������������RCC���������������������������������������������������

  • ������������������

    ���RCC������������������������HSE������������������������������������������������������������������������������������������������������������

  • ������������������

    ������������������������������������������SysTick������HCLK���������������������������������������������������

  • GPIO������

  • ������GPIO������������

    ������GPIO���������������������������������������������������

  • ������������������

    ���������GPIO������������������������������������������������������/���������������������PB0���PB1������������������LED������������������������������������������������������������������

  • ���������������������

    ������������������

    ���STM32Cube���������������������������Project > Generate Code���������������������������������������������������������������������������������C���������������������������������������������

    ������������

    ���������������������������������������������������������������������������������������������������������������������������

    void SystemClock_Config(void) {
    // ������������������
    RCC_OscInitTypeDef RCC_OscInitStruct;
    RCC_ClkInitTypeDef RCC_ClkInitStruct;
    __HAL_RCC_PWR_CLK_ENABLE();
    __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    RCC_OscInitStruct.PLL.PLLM = 25;
    RCC wireType PLL_PLLN = 360;
    RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
    RCC_OscInitStruct.PLL.PLLQ = 4;
    HAL_RCC_OscConfig(&RCC_OscInitStruct);
    HAL_PWREx_EnableOverDrive();
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE SYSCLK | RCC_CLOCKTYPE PCLK1 | RCC_CLOCKTYPE PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
    HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000);
    HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
    /* SysTick_IRQn ������������������ */
    HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
    }
    void MX_GPIO_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct;
    /* ������GPIO������ */
    __HAL_RCC_GPIOH_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();
    /* ������PB0���PB1��������������������� */
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_SET);
    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    }

    LED������������

    ������������������������������main.c������������������������������������

    int main(void) {
    /* ��������������� */
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    while (1) {
    /* LED������������ */
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
    delay_ms(1000);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
    delay_ms(1000);
    }
    }

    ������������

    ������������������������������������������������������,delay.c���������������������������������������������������

    #include "delay.h"
    #include "stm32f4xx.h"
    uint32_t fac_us = HAL_RCC_GetSysClockFreq() / 1000000;
    void delay_us(uint32_t nus) {
    uint32_t ticks;
    uint32_t reload = SysTick->LOAD;
    uint32_t told, tnow, tcnt = 0;
    ticks = nus * fac_us;
    told = SysTick->VAL;
    while (1) {
    tnow = SysTick->VAL;
    if (tnow != told) {
    if (tnow < told)
    tcnt += told - tnow;
    else
    tcnt += reload - tnow + told;
    told = tnow;
    if (tcnt >= ticks)
    break;
    }
    }
    }
    void delay_ms(uint16_t nms) {
    for (uint16_t i = 0; i < nms; i++)
    delay_us(1000);
    }

    ���������������������

    ���������������������LED������������������������PB0���PB1���������LED���������������������������������������������������������������������DS0���DS1 LED������������������������������������

    ������

    ���������������STM32Cube������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������STM32Cube������������������������������digital������������������������������������������������������������������������������������������

    上一篇:STM32F429第十三篇之stm32f4xx_hal_uart
    下一篇:STM32F429第十一篇之数据类型

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月05日 01时47分10秒