开源平台vscode+ PlatformIO开发STM32开发程序(芯片c8t6)

开源平台vscode+ platform 开发STM32开发程序,STM32是支持arduino程序框架的,你可以直接把arduino程序在STM32开发板上运行。目前我就知道PlatformIO这个平台。

首先安装: vscode,PlatformIO插件。

 

开源平台vscode+ PlatformIO开发STM32开发程序(芯片c8t6)_第1张图片

 新建工程:

开源平台vscode+ PlatformIO开发STM32开发程序(芯片c8t6)_第2张图片

可以选择自己喜欢的开发框架:

开源平台vscode+ PlatformIO开发STM32开发程序(芯片c8t6)_第3张图片

等待工程很着急。。。工程目录:

 

开源平台vscode+ PlatformIO开发STM32开发程序(芯片c8t6)_第4张图片

操作不是那么容易,可以调试下载程序到开发板。

开源平台vscode+ PlatformIO开发STM32开发程序(芯片c8t6)_第5张图片

 

添加程序文件测试: 


开源平台vscode+ PlatformIO开发STM32开发程序(芯片c8t6)_第6张图片

  1. #include"delay.h"
    
    
    void delay_ms(int32_t nms)
    
    {
    
    int32_t temp;
    
    SysTick->LOAD = 8000*nms;
    
    SysTick->VAL=0X00;//清空计数器
    
    SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源
    
    do
    
    {
    
    temp=SysTick->CTRL;//读取当前倒计数值
    
    }
    
    while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
    
    SysTick->CTRL=0x00; //关闭计数器
    
    SysTick->VAL =0X00; //清空计数器
    
    }

     

  2. #ifndef _DELAY_H
    
    #define _DELAY_H
    
    #include 
    
    #include"delay.c"
    
    
    #endif

     

  3. #include"ioconfig.h"
    
    /**
    
    * @brief GPIO Initialization Function
    
    * @param None
    
    * @retval None
    
    */
    
    static void MX_GPIO_Init(void)
    
    {
    
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    
    
    
    /* GPIO Ports Clock Enable */
    
    __HAL_RCC_GPIOC_CLK_ENABLE();
    
    __HAL_RCC_GPIOD_CLK_ENABLE();
    
    
    
    
    /*Configure GPIO pin Output Level */
    
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
    
    
    
    /*Configure GPIO pin : PC13 */
    
    GPIO_InitStruct.Pin = GPIO_PIN_13;
    
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
    
    
    
    }

     

  4. #ifndef _IOCONFIG_H
    
    #define _IOCONFIG_H
    
    #include 
    
    #include"ioconfig.c"
    
    #define led0 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET)
    
    #define led1 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET)
    
    #endif

     

  5. #ifndef _SYSCLOCH_H
    
    #define _SYSCLOCK_H
    
    
    #include 
    
    
    void SystemClock_Config(void);
    
    
    #endif

     

  6. #include"sysclock.h"
    
    void SystemClock_Config(void)
    
    {
    
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
    
    
    
    /** Initializes the CPU, AHB and APB busses clocks
    
    */
    
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    
    RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
    
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    
    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
    
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    
    {
    
    Error_Handler();
    
    }
    
    /** Initializes the CPU, AHB and APB busses clocks
    
    */
    
    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_DIV2;
    
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
    
    
    
    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
    
    {
    
    Error_Handler();
    
    }
    
    }

     

  7. #include"delay.h"
    
    #include"sysclock.h"
    
    #include"ioconfig.h"
    
    int main()
    
    {
    
    HAL_Init();
    
    MX_GPIO_Init();
    
      while(1){
    
    led0;
    
    delay_ms(500);
    
    led1;
    
    delay_ms(500);
    
      }
    }

    不足之处联网下载很慢,很慢。
     

     

     

 

你可能感兴趣的:(STM32系统)