STM32
直播中

杨春林

7年用户 881经验值
私信 关注
[问答]

怎样去搭建一种stm32f103c8t6工程模板呢

怎样去搭建一种STM32f103c8t6工程模板呢?有哪些步骤?

回帖(1)

任娇

2021-12-13 11:40:59
由于项目需要,因此入手了c8t6,虽然网上关于f1的教程挺多的,也挺全面,但自己刚开始接触c8t6,觉得商家配套的开发程序看着不习惯,就想弄成原子的风格,网上直接搜索一下,好像都没有特别好的教程,对于我这些小白来说还是不太友好的(弄这个工程模板花了一天时间,流下了没有技术的泪水。。。)。主要借鉴的是原子的开发文档。



  • c8t6工程模板的建立
  • SWD调试的配置

首先贴上移植原子的具体例程:



我下载的是mini板的rct6资料,因为移植前先逛了william hill官网 ,原子哥在某篇帖子说了,直接移植这个开发板的例程即可。


  • 新建相关文件
    新建总文件夹,用来存放本次工程的所有程序,然后再建CORE、HARDWARE、OBJ、FWLIB、SYSTEM、USER这六个文件夹。其中,HARDWARE文件夹是用来存放外设硬件代码,OBJ用来存放生成调试代码,FWLIB是各种.c和.h文件,具体如下:





    这几个文件夹包含的文件分别如下:




















  • 打开MDK,建立新工程,保存到USER下:










    芯片型号选择STM32F103C8,然后会弹出run-time environment窗口,选择取消,










    USER文件夹会出现这两个我们需要的文件:





  • 在MDK添加项目所需要的分组以及文件:






























  • 配置options for target:










    其中,select folder for objects是选择生成的hex存放的目录,这里选择存放在OBJ文件夹中,create HEX file是生成hex文件,用于下载到开发板的:










    到这里就基本上完成了新建工程模板。在上网找相关教程的时候发现很多帖子说延时慢了10倍,然后要在初始化的时候添加一个system_init()函数之类的,后来我在原子的开发文档找到了这句话:















    所以不用再加那句话了。编译程序,应该是通过的(程序源码在后面链接,如果按照上面的步骤来没通过的话就对比一下,或许有什么地方漏掉了也说不好,后面链接的工程文件亲测可用)。
  • 添加LED驱动代码:
    我用的核心板关于LED的管脚分配如下:





    所以需要配置的是PC13号管脚。


#include "led.h"  


//初始化PC13为输出口.并使能这个口的时钟                    
//LED IO初始化
void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
       
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);         //使能PC端口时钟
       
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;                                 //LED2-->PC13 端口配置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
    GPIO_Init(GPIOC, &GPIO_InitStructure);                                         //根据设定参数初始化PC13
    GPIO_SetBits(GPIOC,GPIO_Pin_13);                                                 PC13输出低,关闭所有LED                                               
}


#ifndef __LED_H
#define __LED_H         
#include "sys.h"
#define LED0 PCout(13)        // PC13       


void LED_Init(void);//初始化
                                    
#endif


#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"


int main(void)
{                          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(9600);         //串口初始化为9600
    delay_init();                     //延时函数初始化
    LED_Init();
     
        while(1)
    {
       LED0=0;
       delay_ms(1000);
       LED0=1;
       delay_ms(1000);
        }
}


SWD配置


  • 由于我使用的是ST-LINK,所以这里选择ST-LINK debuger,然后选择SW port:









  • Flash Download选择如下:










    最后选择Download,实现SW下载。整个完整的stm32f103c8t6工程模板点击这里:
举报

更多回帖

发帖
×
20
完善资料,
赚取积分