Tiva前言与环境搭建

本文讲述了作者在准备TivaC123电赛过程中遇到的问题,如资源稀缺和环境配置,分享了如何搭建CCS开发环境、选择合适的工具以及关键的底层驱动代码,对其他参赛者有实用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

付出了很多精力准备的电赛,最后因为种种原因没有取得理想的成绩,虽然为此感到非常的遗憾和痛苦,但实际上也收获了很多。

由于是TivaC123备赛,在准备电赛的过程中,相关资料可以说是相当之少,为此也踩过不少坑(包括比赛期间),所以在这里把自己已经完成的一些底层驱动代码分享给大家,希望能帮大家省时省力,也算证明一下自己参加电赛一趟也算是有所收获。

环境搭建

开发板型号:tm4c123g评估板

本来是打算像msp432一样配置keil的开发环境,但是tivaC系列开发板和msp系列的烧录有所不同。若使用keil向开发板烧录代码,其版本不能超过5.25,否则没法在options->debug中找到官方推荐的Stellaris ICDI下载器。然而在我的电脑上,尽管keil的options->debug中有Stellaris选项,但是这个选项无法被选中,所以我索性就直接使用TI官方的CCS开发环境。在开发实践当中,使用CCS进行编译、烧录、debug,使用vscode进行代码编写,操作起来还是比较方便的

CCS的下载就在此略去,若需参考请看这里

在这里插入图片描述

在这个界面记得勾选 TM4C12x···那栏

新建项目

在CCS的project栏选new CCS project

在弹出的界面进行如下操作

在这里插入图片描述

如果想将项目保存在自定义的路径下,就取消选定 use default location,并输入自己的路径

TivaSDK

在进行自己项目的业务代码的开发之前,需要到官网上下载tivac123g开发板使用的软件包

在这里插入图片描述

在这里插入图片描述

这个软件包中解压后有一些例程代码(点灯等),同时也有一些必需的底层驱动。

将其中一些必需的底层驱动复制到项目路径下(主要是inc、driverlib路径下的一些文件,但是不能无脑复制,会报错)

可以参考我github仓库的已经筛选好的DriverLib。当然也可以自己百度其他文章。

其中DriverLib->sensorlib路径下的文件是当初为了配置mpu6050引入的,但是事后并没有使用mpu6050作为角度传感器,所以这里也可以不复制它。在这里提到是想说,如果有什么特殊的需要也可以在我提供的DriverLib的基础上继续引入其他驱动文件,这里提供的DriverLib只是为了完成大多数基础功能的。

在项目的根目录新建一个main.h文件用来各种驱动文件的头文件引入。也可以把这部分放入main.c中,但我觉得这样更方便一些,因为同时可以将自己的驱动的头文件也在main.h中include,在所有驱动文件中仅需 include "main.h"就可以完成所有头文件的引入。

main.h的内容如下所示:

#ifndef __MAIN_H
#define __MAIN_H

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ints.h"
#include "inc/hw_gpio.h"
#include "inc/hw_uart.h"
#include "inc/hw_pwm.h"
#include "inc/hw_adc.h"
#include "inc/hw_i2c.h"
#include "inc/hw_ssi.h"
#include "inc/hw_qei.h"
#include "inc/tm4c123gh6pm.h"

#include "driverlib/adc.h"
#include "driverlib/debug.h"
#include "driverlib/fpu.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/timer.h"
#include "driverlib/uart.h"
#include "driverlib/pwm.h"
#include "driverlib/i2c.h"
#include "driverlib/eeprom.h"

/*自己定义的头文件*/
···
/*自己定义的头文件*/

// 中断优先级定义
#define USER_INT0 0x00
#define USER_INT1 0x20
#define USER_INT2 0x40
#define USER_INT3 0x60
#define USER_INT4 0x80
#define USER_INT5 0xA0
// 延时函数定义
#define delayms(xms) SysCtlDelay(xms * (80000 / 3)) /*ms级延时*/
#define delayus(xus) SysCtlDelay(xus * (80 / 3))    /*us级延时*/

#endif

路径配置

CCS

在这里插入图片描述

在project->properties中进行配置

Vscode

如果用vscode打开目标项目,会在项目的根目录下生成一个.vscode文件夹,在该文件夹下新建一个 c_cpp_properties.json文件

添加如下内容:

在这里插入图片描述

主要是红框部分,其他的不重要或是已自动生成,其中需要将绿线画的路径替换为你下载CCS的对应路径(不过好像没有也行)

这个文件是告诉vscode项目需要的相关文件都在什么位置,配置好之后就可以很方便的使用vscode的代码补全,写代码用CCS是真的不方便。。。

在vscode编辑好代码后记得保存,这样在CCS编译时才能更新代码。

目录结构

这里只是说我们自己新添加的,新建项目时原有的一些目录保持原样不变


.

|–DriverLib

|–|–driverlib

|–|–inc

|–Control

|–|–Control.c

|–Drivers

|–|–Flag.c

|–|–Interrupt.c

|–|–其他(各种硬件的驱动,包括初始化、读数等)

|–.vscode

|–|–c_cpp_properties.json

|–main.c

|–main.h


其中 Control.c负责控制的业务逻辑; Flag.c存放各种标志位,及对其操作的函数; Interrupt.c中是各种中断回调函数的业务代码

main.c的主循环中进行各种标志位的轮询

资料

here

包括原理图、库函数说明、各引脚功能表格

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值