0%

一、编程开发环境安装与配置

基于 TM4C1294NCPDT 微控制器,编程开发环境安装与配置(Keil5 + TivaWare)
TM4C1294 属于 TI 公司基于 ARM Cortex M4 内核的 Tiva C 系列的 MCU
TivaWare 是 TI 公司提供的针对 Tiva C 系列 MCU 的一套软件开发包

1. 开发板介绍

(1) MCU
(2) 仿真器电路:将在电脑上写的程式下载到 MCU 中
(3) 引脚

软件包安装

软件包安装

2.Keil5 集成开发环境安装

3.TM4C 系列芯片及板卡的 DFP 安装

完成 Keil.TM4C_DFP.1.1.0.pack 安装后,
可以在 Keil 集成开发环境中选择 TI 公司的 TM4C 系列芯片

4.TM4C1294XL 的驱动库及样例程序安装

运行 SW-EK-TM4C1294XL-2.1.4.178.exe

5.Stellaris ICDI 调试驱动安装

将 TM4C1294XL LaunchPad 开发板通过 USB 线与电脑相连
打开电脑的设备管理器(如果没有安装 Stellaris ICDI 设备驱动,会显示无法识别该设备)
更新驱动程式,从电脑中选择驱动软件,老师给的软件安装包中有
安装驱动成功之后

二、在 Keil5 中建立基于 TivaWare 库的 TM4C1294 项目

1. 介绍安装的文件夹

安装默认路径:C:\ti\TivaWare_C_Series-2.1.4.178
(1) 目录 \inc 中包含针对 TM4C1294XL 系列芯片开发的.h 文件
(2) 目录 \drivelib 中包含针对 TM4C1294XL 系列芯片开发的各种功能.c 源文件以及对应的.h 文件
这些文件被编译在一个.lib 文件中 (drivelib)
不同开发软件所编译的库文件格式有所不同
Keil 所生成的库文件 drivelib.lib 位于目录 \driverlib\rvmdk

2. 建立项目

新建用户目录设为 C:\A2000TM4\EXP0
从 C:\ti\TivaWare_C_Series-2.1.4.178 中,将 \inc 和 \driverlib 两个子目录拷贝到用户目录中

三、TivaWare 库

1. 数据手册和用户指南

数据手册和用户指南
数据手册主要用于芯片选型和设计原理图时参考;用户指南主要用于在编程时查阅
TM4C1294NCPDT 微控制器采用 128 脚的 TQFP 封装,从左上角按逆时针方向,引脚编号从 1 到 128

2. 主板

主要参数
主板

3. 引脚

主板
详细引脚信息参考用户指南
一个 IO 口可以复用多个功能,即一脚多用
例如 Header A1 第 5 个引脚,默认值为 GPIO-PC6
经过 GPIOPCTL 寄存器来配置选择,可以用作 U5Rx 或 EPI05S
IO 复用功能,可以方便在设计原理图和编程时灵活选用

4.MCU 编程的两种方式

(1) 寄存器编程
(2) 函数库编程

函数库编程是在寄存器编程的基础上升级而来的一种易于学习和开发的编程方式

5.TivaWare 函数库

在 C:/ti/TivaWare_C_Series-2.1.4.178/docs 文件夹里是 TI 公司提供的 TivaWare 库函数各种用户指南
SW-TM4C-DRL-UG-2.1.4.178.pdf 是外设驱动库用户指南
SW-TM4C-EXAMPLES-UG-2.1.4.178.pdf 是示例用户指南
在 C:/ti/TivaWare_C_Series-2.1.4.178/examples 文件夹里是 TI 提供的样例程序

四、时钟信号与 GPIO 工作原理

时钟树

1.TM4C1294NCPDT 微控制器有 4 种时钟源

(1) PIOSC (Precision Internal Oscillator) 内部精密时钟

16Hz,未校正时精度有限,容易受温度与供电电压影响

(2) MOSC (Main Oscillator) 主时钟

实验板上焊接了一个 25Hz 的石英晶体振荡器,可作为高精度时钟源使用

(3) LFIOSC (Low Frequency Internal Osc) 内部低频率时钟

通常接入 33KHz 振荡源,用于节能模式

(4) RTCOSC (Hibernation Module RTC Osc) 冬眠模式实时时钟

接入 32.768kHz 振荡器

SYSCLK,系统时钟,可以来源于上述 4 种时钟源之一。
微控制器内部有一个 PLL 模块,主要作用是对时钟进行倍频,然后把时钟输入到各个功能部件。
PIOSC (16MHz) 和 MOSC (25MHz) 可以通过 PLL 模块将 PLL 频率配置成 320MHz 或是 480MHz,然后从此 PLL 频率经过分频 (1-1024) 到想要的时钟频率。

2. 系统时钟在不同的工作模式下使用不同的时钟源

微控制器可以工作在 RUN,SLEEP,DEEP SLEEP 模式下,
默认情况下,微控制器工作在 RUN 模式下,PIOSC (16MHz) 作为 SYSCLK 的时钟源

3. 系统时钟配置

SysClockFreqSet 函数完成系统时钟的设置,详细使用方法可以阅读 driverlib/sysctl.c
SysClockFreqSet 函数

4. 通用输入输出端口 (GPIO)

(1) 15 个物理 GPIO 模块,每一个模块对应一个端口,Port A~H、J~N、P、Q

共 90 个输入 / 输出引脚

(2) GPIO 模块具有如下特性

(a) 可编程控制的 GPIO 引脚配置

  • 设置上拉电阻或下拉电阻
    功能:抗干扰 (因为引脚悬空加上电磁干扰产生的) 或是预设默认电平值
    在电路断开的时候,下拉电阻会得到 low,上拉电阻会得到 High
    上拉电阻和下拉电阻
  • 推免输出 / 开漏输出
    推挽输出:可以输出高,低电平,连接数字器件;
    推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止
  • 输出时可配置为 2/4/6/8/10/12mA 驱动电流
    对于需要大电流的应用最多有四个引脚可以配置为 18mA
    8/10/12mA 驱动的斜率控制
  • 数字输入 / 模拟输入
    (b) 配置为输入模式可承受 0~3.3V 电压
    (c) 高灵活度的复用引脚,可以用作 GPIO,或是一种或多种的外设功能

5.GPIO 函数

GPIO 函数
GPIO 函数

五、常用调试方法

原因

1.switch 的 case 中有定义变量

2.goto 跳过了变量的定义

但后来我没有解决,因为 goto 是不被推荐使用的函数,所以我换了个方式写

一、网络介绍

1. 网络通信概述

网络通信:就是为了联通多方然后进行通信用的,即把数据从一方传递给另外一方。
使用网络能够把多方链接在一起,然后可以进行数据传递。
所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。

2.IP 地址

数据机和交换机的功能后面会介绍。
IP 地址分类:

閱讀全文 »

一、MIMO 的来龙去脉

1.MIMO 的思路

无线通信的技术进步动力有很大一部分是不断提高空口速率(例如:手机上传和下载的网速)。
提高网速的一条路径是增加带宽,从 2G 的 0.2MHz 增加到 5G 的 100MHz。
载波聚合 CA 技术也是一种变相增加带宽的技术(例如:4G 3CC 聚合,相当于 60M 带宽)。

增加带宽的效果相当于:一个人徒手搬砖 -> 一个人骑一台自行车搬砖,是让一个人搬砖的能力增加。
MIMO 的思路:找多个人来搬砖。

閱讀全文 »

C++ advance 文章总览

C++ advance(四)Linux 命令基础 —1.Linux 常用命令
C++ advance(四)Linux 命令基础 —2.vim 和 gcc 和 library
C++ advance(四)Linux 命令基础 —3.makefile 和 gdb 和 IO
C++ advance(四)Linux 命令基础 —4.stat 和 readdir 和 dup2
C++ advance(五)Linux 进程和线程 —1. 进程控制
C++ advance(五)Linux 进程和线程 —2. 进程间通信
C++ advance(五)Linux 进程和线程 —3. 信号
C++ advance(五)Linux 进程和线程 —4. 进程和线程
C++ advance(五)Linux 进程和线程 —5. 线程同步
C++ advance(六)Linux 高并发网络编程开发 —1. 网络编程基础 socket
C++ advance(六)Linux 高并发网络编程开发 —2.tcp 三次握手 - 并发
C++ advance(六)Linux 高并发网络编程开发 —3.tcp 状态转换 - selcet poll
C++ advance(六)Linux 高并发网络编程开发 —4.epoll udp
C++ advance(六)Linux 高并发网络编程开发 —5. 广播 - 组播 - 本地套接字
C++ advance(六)Linux 高并发网络编程开发 —6.libevent
C++ advance(六)Linux 高并发网络编程开发 —7.xml json
C++ advance(七)Linux 高并发 web 服务器开发 —1.
C++ advance(七)Linux 高并发 web 服务器开发 —2.
C++ advance(七)Linux 高并发 web 服务器开发 —3.