【实验内容】任选一个LED灯,4秒内从全灭到全亮,亮度变化至少20个台阶,循环往复。

1.#ifdef DEBUG 的作用

//*****************************************************************************
//
// The error routine that is called if the driver library encounters an error.
//
//*****************************************************************************
#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif

在工程设置里有一些设置会对该工程自动产生一系列的宏,用以控制程序的编译和运行。就好象楼上说的一样,如果你把代码夹在#ifdef DEBUG 和对应的 #endif 中间,那么这段代码只有在调试(DEBUG)下才会被编译。也就是说,如果你在RELEASE模式下,这些代码根本就不会存在于你的最终代码里头。

你可以手动实现DEBUG的定义如:
   
   #define DEBUG

那么你的 #ifdef DEBUG 就会是真的。夹在中间的代码会进行编译,可以说,这些宏代码本身是面向编译器使用的,不要用来实现你的业务逻辑代码,这样会带来很不好的影响。这类宏定义的一个典型应用就是产生/屏蔽调试信息,你可以把这种应用放在你希望对程序的执行过程进行跟踪的代码里,为它们加上一些‘痕迹’,方便你进行判断。而在其他模式(RELEASE)下,这个函数只不过是一个空函数,又因为它是inline的,所以它实际上不会为你产生任何代码。这样你就能为自己的代码带来一种非常实用的效果,既能在DEBUG模式下为你提供判断的依据,又能在最终的RELEASE版中方便的抛弃掉它们,而不需要你手动地删除掉那些代码。

作为宏指令,如果定义了DEBUG宏那么编译#IF后面到#ENDIF的代码否则不编译DEBUG宏一般是编译器产生,如果编译模式是DEBUG就会产生这个宏,如果是RELEASE就不会

2.设置系统时钟

    ////设置系统时钟为50MHz//
    SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);

因为SYSCTL_USE_PLL启用了内部的PLL,它的时钟参考源是外部晶振(16MHZ),PLL额定值是200MHz,SYSCTL_SYSDIV_4将其四分频,所以是50MHz不知道你用哪款芯片,811的话内部有内部振荡器12MHz+-30%

3.LED灯初始化

D2——蓝色——PF0(锁定状态,需要解锁)

D3——绿色——PA4

D4——红色——PD6

//*****************************************************************************
//Attention
//TM4C123 NMI unlock - To those who want to use PF0 and PD7, be reminded that these pins defaults as NMI ! ! !
//
//*****************************************************************************

    //// LED灯初始化////1.外部设备设能,这里要用到PF0,所以使能PF端口
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//2.PF0解锁(只有蓝灯需要)HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0xFF;HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;        //3.设置PF0管脚为输出类型
   GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);//4.因为蓝色的LED管脚有复用,所以初始状态是亮的,这里把它灭掉(其他灯也可以顺手灭一下)GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);

综合起来LED灯的初始化有以下几个步骤:外部设备使能,(解锁),设置管脚类型为输出,灭灯

4.主程序

while(1){for(k=20;k>0;k--)    for(i=4000;i>0;i--){GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0<<0);    //设置蓝色LED灯状态为亮for(j=30*(20-k);j>0;j--);                         //软件延时        GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);    //设置蓝色LED灯状态为灭for(j=30*k;j>0;j--);                              //软件延时
            }            }

转载于:https://www.cnblogs.com/pursuit1996/p/4912472.html

单片机TM4C123学习(一):GPIO模块的应用相关推荐

  1. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础

    上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...

  2. 51单片机 | 如何学习单片机 | 开发板功能介绍 | 开发板使用方法 | 51单片机介绍

    文章目录 一.如何学习单片机 1.学习哪种类型的单片机 2.学习单片机的最佳方法 3.学习单片机的准备工作 4.学习单片机的常见疑问 二.开发板功能及使用介绍 1.开发板功能介绍 2.开发板使用方法 ...

  3. 华芯微特SWM181学习笔记--GPIO应用与环境搭建

    华芯微特SWM181 系列 32 位 MCU(以下简称 SWM181)内嵌 ARM® CortexTM-M0 内核, SWM181 支持片上包含精度为 1%以内的 24MHz.48MHz 时钟,并提供 ...

  4. 树莓派Raspberry Pi上安装和使用RPi.GPIO模块以及引脚对照表

    记录自己学习树莓派的过程. 如果要使用Python来使用GPIO信号,需要使用RPi.GPIO模块. 如果你使用的是Python2版本,树莓派默认安装了RPi.GPIO模块(python-rpi.gp ...

  5. RT-1052学习笔记 - GPIO架构分析

    RT-1052学习笔记 - GPIO架构分析 一.RT1052之GPIO与IOMUX 二.GPIO架构分析 分析GPIO的外设框架 库函数操作 1.初始化MUX 2.初始化PAD 3.初始化GPIO外 ...

  6. 51单片机入门学习小结(流水灯与数码管)

    51单片机入门学习小结(流水灯与数码管) 对原理图的分析 以下是我所用单片机的原理图 这块51单片机一共有4个I/O口(意思为input/output),也代表着如果我们后续都要用到这四个的话那么功能 ...

  7. 立创梁山派学习笔记——GPIO输出控制

    梁山派 前言 开发板简介 GD32F407ZGT6官方资源 数据手册 1.系统框图 2. 引脚复用表 3.命名规则 4.其他 用户手册 固件库与PACK包 开发环境搭建 立创官方的资料包 资料齐活,开 ...

  8. LPC2124单片机的基础操作——GPIO、外部中断、定时器和串口

    LPC2124单片机的基础操作--GPIO.外部中断.定时器和串口 LPC2124的简介 LPC2124之GPIO GPIO简介 编程习惯 代码编写 LPC2124之EINT(外部中断) EINT简介 ...

  9. K_A08_013 基于 STM32等单片机驱动大功率MOS管模块按键控制直流电机加减速启停

    目录 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 大功率MOS模块驱动 对应程序: 四.部分代码说明 接线说明 STC89C52RC+大功率MOS模块 STM32F103C8T6+大功率 ...

  10. 单片机课程学习的数字时钟系统模块化设计研究

    摘要:随着人们生活环境的不断改善和美化,人们希望通过在生活中得到更多的乐趣,来满足我们日益增长的精神需求.单片机课程学习的数字时钟系统模块化设计研究能够给人们的生活带来丰富多彩的滋味,低廉的造价以及控 ...

最新文章

  1. 2018未来科学大奖揭晓:袁隆平、马大为、林本坚等7位科学家获奖
  2. Appium的DesiredCapabilities参数设置
  3. Berkeley DB——Database
  4. 为什么dw预览不了php文件,dreamweaver为什么添加不了预览浏览器
  5. ip地址转换数字函数 iton_DataLakeAnalytics: 解析IP地址对应的国家城市的函数
  6. 987. 二叉树的垂序遍历
  7. Linux Unbunt 安装显卡驱动 简单方法
  8. 【SQL*PLUS】Copy Command
  9. ceph怎么搭建文件存储_SUSE专家谈Ceph落地之最佳实践
  10. pandas.DataFrame.append
  11. [转]malloc的内存用free释放后为何系统回收不了
  12. window下mysql免安装版教程大全
  13. iPhone中BigBoss源添加以及SBSettings安装。
  14. 洛谷P1725 琪露诺(单调队列优化dp)
  15. 汇编:动态画出一棵七彩圣诞树
  16. 修复黯淡的夜拍照片!
  17. java将图片url转换成数据流输出到前端
  18. java操作mysql导表_java导出数据库的全部表到excel
  19. hive linux时间戳转换,hive时间戳转换UDF更新
  20. LeetCode.天际线问题

热门文章

  1. OpenCV——Sobel和拉普拉斯变换
  2. JFinal实现原理
  3. pgpool-II的master-slave模式的分析
  4. Ubuntu 安装DELL D630无线网卡驱动
  5. pthread_cond_signal只能唤醒已经处于pthread_cond_wait的线程
  6. mysql主从配置实例
  7. 业务逻辑实现方式的讨论:存储过程 good or bad?
  8. [Silverlight动画]转向行为 - 路径跟随
  9. js 小数自动补0_JS自定义保留小数,并支持补零(四舍五入)
  10. AssetBundle的一些笔记