TM4C123系列(一)————GPIO

这篇具有很好参考价值的文章主要介绍了TM4C123系列(一)————GPIO。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


一.实验介绍

点亮TM4C123板载LED

二.原理图

tm4c123,TM4C123,arm,单片机,嵌入式硬件

tm4c123,TM4C123,arm,单片机,嵌入式硬件

 三.所需函数

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) 

作用:获得时钟频率

四.代码文章来源地址https://www.toymoban.com/news/detail-602834.html

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)
{
    //设置时钟频率为40MHz
    SysCtlClockSet( SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
    //使能外设GPIOF
	SysCtlPeripheralEnable( 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的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TM4C123GH学习笔记(1.0)——keil搭建开发环境

    关于安装keil5 KDM的教程参考B站江科大即可。本文需要安装好keil5。 本文附有keil的pack和相关驱动,以及创建好的空工程: 百度云链接:提取码:tc1e 站内链接:CSDN下载(免费)      打开设备管理器     选择文件夹下的驱动    装好之后,插着TM4C123GH6PM板子可以检测到ICDI。

    2024年02月17日
    浏览(39)
  • 小米4C刷openwrt

    目录 1.进入openwrt官网  2.下载4c对应的openwrt固件 3.上github下载打开4c的telnet和ftp的python项目 4.解压项目安装python依赖(自备python环境) 5.使用telnet登录路由器(winodws里自行启动telnet功能)  6.资源管理器登录ftp  7.使用telnet让程序写入固件 8.设置密码 9.安装中文(自行配上网)

    2024年02月09日
    浏览(34)
  • 服务器4c是什么意思?8g是什么?

    4核8G是云服务器的参数,代表云服务器的硬件配置和网络带宽,4核代表CPU、8G是指内存、12M代表带宽值为12Mbps,腾讯云百科txybk.com以腾讯云轻量应用服务器4核8G12M带宽配置为例,来详细介绍下服务器参数: 4c8g是什么意思?或者4h8g12m代表什么?代表云服务器的参数配置。目前

    2024年02月22日
    浏览(52)
  • 小米路由器4C刷机(以OpenWrt为例)

    刷入Breed Breed也被称为“不死鸟”,顾名思义刷入Breed后即使后续为路由器刷固件失败,也不至于让路由器变砖,并且对于以后更换固件非常友好,强烈建议刷Breed。 首先下载刷机所需要用到的工具 链接:https://pan.baidu.com/s/1kGnIe2T8Ul1XvWobdyxDbQ  提取码:iaxp  接着把路由器联网

    2024年02月06日
    浏览(123)
  • [HDLBits] Exams/m2014 q4c

    Implement the following circuit:  

    2024年02月12日
    浏览(28)
  • 小米路由器4C从0到自编译以及刷固件

    最开始选择小米路由器4C是因为学校网速只有100M,图个便宜,结果刷固件成了最艰辛的道路。 这里一步步道来。 小米路由器自带管理界面的使用,还有路由器基本使用就不在这说了,这应该是基础常识。 这是我的小米路由接线 这里我打算先刷breed,因为自编译固件怕出问题

    2024年02月09日
    浏览(80)
  • icu4c库中icudtl.dat文件剪裁

    在工程中需要把ansi编码转utf-8,引入icu4c库,默认编译出来的.dat文件有30多M,由于仅仅需在MacOS系统下要把Windows中的ansi编码转成utf-8,需要进行裁剪。 源码下载:https://github.com/unicode-org/icu,本文基于71.1版本编译,icu分c和java两个版本,以下都是基于c版本编译。 1.在终端更改运

    2024年01月19日
    浏览(28)
  • UE4C++学习篇(十九)-- 动画蒙太奇初级使用

    用一个第三人称的射击案例来简单介绍一下动画蒙太奇的使用,动画蒙太奇的具体介绍这里就不多说了,不知道的小伙伴可以去搜一下了解。 这里介绍角色射击,射击的时候播放一个射击动画。 选中需要创建出动画蒙太奇的动画,点击创建,创建动画蒙太奇。 也可以通过动

    2024年02月09日
    浏览(43)
  • UE4C++之动态多播委托的简单使用

    本文讲述一下动态多播委托的简单使用,包括它的声明,定义,在蓝图中的使用。 我这边使用的前提是在创建了一个属性组件,添加到角色中,当角色收到血量改变的通知的时候,会进行相应的处理。 定义变量,注意在public权限内使用,因为外部会引用到。BlueprintAssignable标

    2024年02月13日
    浏览(41)
  • 高云FPGA芯片GW1NSR-4C芯片资源介绍

    首先自我介绍:我司市高云的一级代理商  随时欢迎大家和我探讨高云FPGA芯片:Lattice_joan 高云4K的FPGA芯片采用的是高云半导体小蜜蜂系列的GW1NSR-4C,它是一颗SoC芯片,片上集成了FPGA逻辑和ARM Cortex-M3 硬核处理器 。注意是硬核处理器,而不是软核,两者有很大的区别,硬核处

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包