电赛准备搞飞机,特地学了下TM4,准备用TM4搞飞控。


一.实验介绍

点亮TM4C123板载LED

二.原理图

 三.所需函数

1.SysCtlClockSet(uint32_t ui32Config)

参数:ui32config 是需要配置设备的时钟。

共分四个参数,系统时钟分频值,使用OSC还是PLL倍频,OSC时钟源选择,外接晶振频率。1~3分频不可以用于PLL分频,4~5分频可以用于PLL分频,4分频之后是50MHz,5分频之后是40Mhz。

一般用(SYSCTL_SYSDIV_5 | SYSCTL_XTAL_16MHZ | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN)来将时钟配置为40Mhz。

作用:设置外设时钟

2.SysCtlPeripheralEnable(uint32_t ui32Peripheral)

参数:uint32_t ui32Peripheral为需要使能的外设。

作用:使能外设。

3.GPIOPinTypeGPIOOutput(uint32_t ui32Port, uint8_t ui8Pins)

参数:uint32_t ui32Port为外设基地址,uint8_t ui8Pins为外设的引脚

作用:设置GPIO口为输出

**3的作用相当于4和5一起使用,所以要么用3,要么4和5一起用

4.GPIODirModeSet(uint32_t ui32Port, uint8_t ui8Pins,uint32_t ui32PinIO);

参数:uint32_t ui32Port为外设基地址,uint8_t ui8Pins为外设引脚,uint32_t ui32PinIO为对应外设需要设置的模式,一般设置为输出或者输入

#define GPIO_DIR_MODE_IN        0x00000000  // Pin is a GPIO input
#define GPIO_DIR_MODE_OUT       0x00000001  // Pin is a GPIO output
#define GPIO_DIR_MODE_HW        0x00000002  // Pin is a peripheral function

作用: 设置引脚的方向和模式

5.GPIOPadConfigSet(uint32_t ui32Port, uint8_t ui8Pins,uint32_t ui32Strength, uint32_t ui32PadType);

参数:uint32_t ui32Port为外设基地址,uint8_t ui8Pins为外设引脚,uint32_t ui32Strength为输出驱动强度,uint32_t ui32PadType为具体的输出或者输入模式

//输出驱动强度
//! - \b GPIO_STRENGTH_2MA
//! - \b GPIO_STRENGTH_4MA
//! - \b GPIO_STRENGTH_8MA
//! - \b GPIO_STRENGTH_8MA_SC
//! - \b GPIO_STRENGTH_6MA
//! - \b GPIO_STRENGTH_10MA
//! - \b GPIO_STRENGTH_12MA
//模式
//! - \b GPIO_PIN_TYPE_STD          推挽
//! - \b GPIO_PIN_TYPE_STD_WPU      弱上拉
//! - \b GPIO_PIN_TYPE_STD_WPD      弱下拉
//! - \b GPIO_PIN_TYPE_OD           开漏
//! - \b GPIO_PIN_TYPE_ANALOG       模拟
//! - \b GPIO_PIN_TYPE_WAKE_HIGH
//! - \b GPIO_PIN_TYPE_WAKE_LOW

作用:为引脚设置PAD

6.GPIOPinWrite(uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val)

参数:uint32_t ui32Port为外设基地址,uint8_t ui8Pins为外设引脚,uint8_t ui8Val为写入的值(低电平为0,高电平为引脚名)

作用:输出高低电平

7,SysCtlDelay(uint32_t ui32Count)

参数:要执行的延迟循环迭代次数

作用:延时ui32Count * 三个指令周期的时间

8.SysCtlClockGet(void) 

作用:获得时钟频率

四.代码

led.c#include "inc/tm4c123gh6pm.h"
#include "led.h"
#include "inc/hw_gpio.h"
#include "inc/hw_sysctl.h"
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
void LED_Config(void)
{//设置时钟频率为40MHzSysCtlClockSet( SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);//使能外设GPIOFSysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOF);//设置GPIOF_PIn1,GPIOF_PIn2,GPIOF_PIn3为输出模式GPIOPinTypeGPIOOutput( GPIO_PORTF_BASE,  GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
//  GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_DIR_MODE_OUT);
//  GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
}
led.h#ifndef __LED_H
#define __LED_H
void LED_Config(void);
#endif
main.c#include "tm4c123gh6pm.h"
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_sysctl.h"
#include "inc/hw_gpio.h"
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
void main(void)
{LED_Config();while(1){//点亮红灯GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 2);/*延时 SysCtlClockGet()*1/3*三个指令周期的时间(s),一个指令周期为1/40MHz,所以是 SysCtlClockGet()*1/3*3/40MHz(s),通过SysCtlClockGet()可以得到时钟频率也是40MHz,所以就 是延时1s*/SysCtlDelay( SysCtlClockGet()*1/3);//点亮蓝灯GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 4);SysCtlDelay( SysCtlClockGet()*1/3);//点亮绿灯GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 8);SysCtlDelay( SysCtlClockGet()*1/3);}
}

TM4C123系列(一)————GPIO相关推荐

  1. TM4C123系列(三)————PWM输出

    一.实验介绍 使用PWM控制板载LED绿灯与蓝灯交替呼吸闪烁 二.PWM介绍 TM4C123有两个PWM模块,每个模块有四个发生器和一个控制模块,每个发生器可以产生两路PWM输出,一共可以输出16路P ...

  2. TM4C123系列(四)————UART串口通信

    一.实验简介 使用TM4C123的串口通信功能实现单片机与PC端通信. 二.UART介绍 TM4C123有八个串口,其中UART0已经与USB集成,UART0建议只用来和PC端通信,不要与外界通信. ...

  3. 【先楫HPM6750系列】GPIO点灯和按键控制

    [先楫HPM6750系列]GPIO点灯和按键控制 本文介绍如何点亮HPM6750EVKMINI开发板上的三色LED灯,以及如何使用HPM SDK实现--通过GPIO读取HPM6750EVKMINI开发 ...

  4. RK系列主板GPIO计算方式

    RK(瑞芯微)系列主板GPIO计算方式 记录一下rk系列gpio num计算方式,测试芯片,3288,3399,3308均正确 查看GOPI 引脚 如图是3308gpio部分定义,已linux系统为例 ...

  5. TM4C123系列ARM单片机开发入门介绍

    初学TM4C123GH6PZ,以前未接触过ARM,所以感觉一头雾水.根据自己以前C51的简单经验,对照资料很少的ARM4教程,摸索着终于明白了开发流程,从软件到硬件用自己的程序点亮了LED.现将自己的 ...

  6. STM32H7学习之路继续(stm32H7系列3) GPIO

    几个重要的参考网址 1.电子工程世界网 http://tags.eeworld.com.cn/tags/STM32H7 链接: link. 2.转:https://blog.csdn.net/simo ...

  7. STM32F4寄存器初始化系列:GPIO

    1 static void GPIO_Init(void) 2 { 3 4 //sound 5 GPIO_Set(GPIOB,PIN4,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO ...

  8. 飞思卡尔S12XE系列---基础GPIO操作

    MC9S12XET256MMA普通IO口输入输出功能的使用: IO口数据方向寄存器:设定0为输入模式,设定1为输出模式.复位后默认输入模式. IO数据寄存器:输出模式下–设定1为高电平 设定0为低电平 ...

  9. ZYNQ7000系列入门之GPIO点灯

    文章目录 ZYNQ AC7020 一.简介 二.MIO和EMIO/AXI_GPIO 1.MIO 2.EMIO 3.AXI_GPIO 三.开发板IO口 四.裸机开发点灯 1.代码部分 2.测试 五.li ...

最新文章

  1. 漫话:如何给女朋友解释为什么Windows上面的软件都想把自己安装在C盘
  2. css实现横向进度条和竖向进度条
  3. 【PM模块】操作功能概览
  4. 计算机导论中的名词解释,计算机导论期末考试试题及答案
  5. TypeScript 书写 .d.ts 文件的一些注意事项
  6. UI5_INFO_FETCH_FROM_DB
  7. 用蒙特卡洛方法计算派-python和R语言
  8. Revit 2011 二次开发之Ribbon
  9. (193)FPGA上电后IO的默认状态(Vivado软件默认为z)
  10. 程序读取计算机设备管理器中各设备的状态(启用/禁用)?(转自大富翁)
  11. sparkTransformation算子
  12. 应用程序错误代码0xe06d7363怎么解决
  13. ORACLE11g R2下载地址
  14. Typescript入门教程(B站黑马程序员)
  15. 计算机正数和负数的除法运算,正数与负数——整数的乘除法与四则运算.pdf
  16. win 10 PHP开发环境配置
  17. ubuntu 1804 安装matlab2018a
  18. 使用DGV列获取Combox绑定所有的列为筛选条件
  19. 如何给单据分录上增加核算项目的F7(代码示例)。
  20. JAVA_JSP网吧自动计费收费管理系统

热门文章

  1. 让虚拟机使用usb3.0
  2. 苹果相关设备查询购买日期
  3. 态路小课堂 丨400G QSFP-DD SR8和DR4光模块连接方案
  4. rancher k8s 对接 ceph 存储
  5. 2020年大厂阿里,腾讯,字节跳动,美图,百度等技术线职级薪资一览表
  6. 大幅面柔性印刷线路板缺陷在线视觉检测系统设计
  7. 雷达多普勒频率计算公式_雷达基础知识:雷达分类
  8. 【小白学爬虫连载(1)】-爬虫框架简介
  9. java 匹配url的正则表达式_java匹配url的正则表达式
  10. 张量入门(Tensor for Beginners)(一)