由于项目需要,因此入手了c8t6,虽然网上关于f1的教程挺多的,也挺全面,但自己刚开始接触c8t6,觉得商家配套的开发程序看着不习惯,就想弄成原子的风格,网上直接搜索一下,好像都没有特别好的教程,对于我这些小白来说还是不太友好的(弄这个工程模板花了一天时间,流下了没有技术的泪水。。。)。主要借鉴的是原子的开发文档。
- c8t6工程模板的建立
- SWD调试的配置
首先贴上移植原子的具体例程:
链接如下:正点原子openedv资料下载地址;我下载的是mini板的rct6资料,因为移植前先逛了论坛,原子哥在某篇帖子说了,直接移植这个开发板的例程即可。
-
新建相关文件
新建总文件夹,用来存放本次工程的所有程序,然后再建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工程模板点击这里:百度网盘链接:w7xt
转载:https://blog.csdn.net/weixin_42827999/article/details/101699674