1.前言
       由于芯片是Cortex-M4内核,所以支持使用Keil Mdk开发,这里我就使用我比较熟悉的Keil来开发。

2.安装芯片开发包
       安装最新版本的keil mdk,我现在的keil版本是5.36。打开keil,点击Pack Installer,下图的按钮。

       打开Pack Installer之后在左边栏找到TI->Tiva C Series,点击后右边栏就会出现这个系列的芯片包(TM4C_DFP),然后点击install进行安装,安装时等待右下角的进度条跑满即可。

3.建立工程
       打开keil,Project->new uVision Project->选择工程文件存放路径(工程结构根据自己喜好来即可)->选择芯片型号TM4C1294NCPDT->在Manage Run-Time Environment中选择需要添加的文件,我选择了CMSIS->CORE和Device->Startup,就是内核文件和启动文件,如下图所示。->点击ok后工程就建立完成了。

       此时建立的工程还是个空白的工程,里面就两个启动文件。我们需要添加一个main.c文件到Group1中,写一个空的main函数。

4.下载芯片SDK
       开发单片机还是需要官方的SDK支持的,去TI的官方搜索这个芯片就可以下载到许多相关的资源和手册,网址如下
https://www.ti.com.cn/tool/cn/SW-TM4C


下载成功后点击运行安装,完成后得到一些文件,里面就包含库文件,安装好后的文件目录如下。将里面的driverlib和inc文件夹拷贝到建立的工程目录下面,我在工程目录下建立了一个Lib文件夹来存放库文件。


       设置AC6编译器选项的,AC5-like warnings,在Define中添加芯片型号PART_TM4C1294NCPDT和rvmdk宏定义,rvmdk会在库文件中涉及到一些条件编译,用来选择使用mdk相关的语法。

Keil里添加头文件路径。

点击编译后会出来许多下面这样的错误。

       应该是AC6的汇编语法和AC5的有所区别。因为现在AC5编译器ARM官方已经不再升级维护了,现在新版Keil建立工程都是默认使用AC6编译器,这个库的文件应该是按照AC5的汇编语法写的就会报这个错误。如果不想使用AC6编译器,可以直接换回AC5编译器进行编译可以直接编译成功(下图为AC5编译结果,需要勾选c99 mode)。

5.解决AC6汇编语法错误
       本小节来解决上节的编译错误,使用AC5的话可以直接跳过本小节。
       ARM的文档中(关于AC5 to AC6),有下面这么一段话,关于改变AC5中C文件嵌入汇编代码格式的说明。

       这里面说了GNU GCC的风格是AC6所允许的,于是就去学习了一些C文件内嵌汇编的语法,就是上面文档里的那个网址有学习。根据语法修改了各个报错的地方,其中一处如下所示,为了可以兼容AC5,我做了如下的条件编译,根据__ARMCC_VERSION来判断是否是AC6编译器,是的话就是上面的函数,不是的话就用原来的函数。想学C内嵌汇编的语法的话可以去https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html这里学习。使用我改过的库的话这些汇编函数可能会有问题,这个风险需要注意。 AC6编译器可以用我上传的模板中的库文件替换使用。

6.写个点灯的程序
       这样一个空白的模板就建立好了,已经可以选择ICDI仿真器直接进行下载了,但是由于main函数还是空白的,下载后也不会有任何现象。这里来编写一个点灯的程序,让板子跑起来。

#include "tm4c1294ncpdt.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"
#include "driverlib/gpio.h"
#include "driverlib/adc.h"
#include "driverlib/uart.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/pwm.h"
#include "driverlib/udma.h"
#include "driverlib/timer.h"#include "inc/hw_gpio.h"
#include "inc/hw_memmap.h"
#include "inc/hw_adc.h"
#include "inc/hw_types.h"#include "system_TM4C129.h"int main(void)
{SystemCoreClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |SYSCTL_USE_PLL | SYSCTL_CFG_VCO_240), 120000000); //TM4C123 canot use this functionSysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0);GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_1);while (1) {GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, GPIO_PIN_0);GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, GPIO_PIN_1);SysCtlDelay(5000000);GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, 0);GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, 0);SysCtlDelay(5000000);}
}

下载程序之后板子上的两个LED灯就跑起来了。

7.点灯的程序下载
       本文中的点灯例程还是比较简陋的,下面这个点灯程序我整理了一下,加入了dwt延时驱动程序(不知道什么是dwt的可以参考网上的文章),大家可以使用下面的这个例程作为基本模板。
点灯例程免费下载
更多细节可以看视频了解

玩转TM4C1294XL(2)——建立Keil工程模板相关推荐

  1. stm32F051系列教程 前哨篇 建立一个KEIL工程模板

    前哨篇:如何建立一个KEIL工程模板 本节的内容主要针对的是初学者,有个熟练使用KEIL建立ARM工程项目的朋友可以略过: 首先大家安装KEIL for arm 4.3版本以上后,找到桌面的keil图 ...

  2. 建立stm32工程模板及Keil设置(一)

    本次建立的工程模板以stm32f103zet6(大容量)单片机为例.模板中所用到的文件都是从stm32固件库V3.5中复制来的. 一.首先在电脑系统桌面上建立"工程模板"文件夹,此 ...

  3. 【超级详细教程】给 GD32F10x 系列建立keil工程

    网友:郑爷爷,什么是朋友? 郑渊洁:孩子将玩具当朋友,成人将朋友当玩具. 如想获取本文相关资料和最后的工程文件,请关注公众号<嵌入式小散修>,回复 GD32F10x系列建立keil模板工程 ...

  4. 基于HAL库创建Keil工程模板

    [百问网]物联网学习笔记 Keil创建HAL库工程模板步骤: 1. 创建相关文件夹: 2. 复制CMSIS和HAL库; 3. 创建"main.c/h"和"stm32f1x ...

  5. 玩转TM4C1294XL(1)——安装ICDI驱动

    买了一个TI的TM4C1294XL的评估板,来写个系列的博客关于TI这个板子的开发.整个系列会分享一些例程,方便学习和开发. 1.安装ICDI驱动        评估板上自带一个仿真器,插上电脑后可以 ...

  6. 玩转TM4C1294XL(5)——PWM配置(死区互补输出)

    1.简介        简单介绍芯片内部的PWM模块,分享PWM的配置.本人是边学习边记录,内容仅作参考,有错误的地方请见谅. 2.PWM介绍        本部分内容参考自TI官方手册.       ...

  7. STM32编译环境、建立工程模板以及程序下载

    1.之前写51的程序我们一般都是用的keil5软件,现在写32程序,要用到keil MDK软件,但是keil5和keil MDK不兼容,也就是说在keil5里面我们没办法写STM32F1之类的程序,而 ...

  8. keil建立stm32工程即标准库函数目录结构

    建立keil stm32工程文件 1. 标准库函数目录结构 需要分清库函数和keil的pack包,前者是ST公司对ST系列芯片编写的库函数,其中包括芯片的的启动文件和外设配置函数文件,后者是Keil ...

  9. CCS8.0--F28335工程模板的建立

    F28335工程模板建立总结 1.当我们需要建立一个工程模板首先在想要建立的地址创建一个新的文件夹 比如:在该路径下创建一个工程,于是创建一个新文件夹123(路径中必须符合要求 比如:不能使用空格 不 ...

最新文章

  1. SRA数据库的各种编号(DRP, ERP 或SRP)
  2. 14大招打造你的平面设计创意
  3. HH SaaS电商系统的入库功能模块设计
  4. 二、在jQuery中使用mockjs
  5. try-catch-finally-return执行路径总结
  6. mapdb java_MapDB使用入门
  7. Keymob锁屏:三屏切换 开启移动入口平台新时代
  8. 海外市场鸿蒙系统,华为海外市场已恢复,鸿蒙系统首发应用在荣耀智慧屏,8月上市...
  9. java循环遍历map集合_Java中遍历Map集合的四种方法
  10. 如何使用Python进行投资收益和风险分析
  11. 2020哔哩哔哩大数据面试题整理
  12. powershell导入脚本失败,禁止运行脚本,无法远程连接服务器
  13. 详解Android刘海屏适配
  14. Java SSM面试篇
  15. 【递归与递推】诸侯安置
  16. 福昕阅读器手型光标中出现向下的箭头,无法选中文本问题
  17. ABBYY2023PDF及OCR文字识别软件
  18. 安卓性能测试(四):耗电量(功耗计算)
  19. 基于宝塔面板和阿里云服务器无域名搭建个人博客网站
  20. STC15单片机驱动WS2812

热门文章

  1. 手把手的操作——用java调用科大讯飞的离线语音识别dll实现离线识别(JNA实现)(二)
  2. 机器人图形变变变_《图形变变变》中班教案
  3. Zigbee抓包教程
  4. 根据知乎分析机皇HD2为何能刷如此多的系统
  5. NHK Easy News 翻译 12月19日
  6. python真正好用的多线程库,使用python的selenium库还有多线程抓取CET4成绩
  7. centos7 安装单机 ClickHouse
  8. 如何在使用计算机时不想砸了它?
  9. 哈工大软件构造-设计模式学习心得
  10. 树莓派4B更换清华源和没有公钥报错