IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> LPC1114按键中断控制pwm输出(含有全部代码) -> 正文阅读

[嵌入式]LPC1114按键中断控制pwm输出(含有全部代码)

添加链接描述## 一、计时器TIM1

1.简述

首先声明自己也在照着手册自学,如有错误请纠正。
LPC114的PWM输出方式很让人无语,由于我先学的STM32。在STM32里PWM输出可以用一个频道来完成,在一个通道里有比较寄存器和重装载寄存器。但是在 LPC114好像不能在一个频道同时完成定时器计数的对比和清零。要使用两个通道,一个通道pwm模式,到寄存器设置的值后开始翻转;另一个通道设置pwm的长度,到寄存器设置的值后定时器计数清零。

2.配置步骤

(1)将引脚配置

  LPC_SYSCON->SYSAHBCLKCTRL |=(1<<16);    //开启时钟
  LPC_IOCON->PIO1_9 &= ~0x07;
  LPC_IOCON->PIO1_9 |= 0x01;         
  LPC_SYSCON->SYSAHBCLKCTRL &=~(1<<16);//关闭时钟

(2)开启定时器时钟

    LPC_SYSCON->SYSAHBCLKCTRL |= (1<<8);        //开启定时器时钟

(3)配置寄存器
大家最好自己对着手册自己看看寄存器控制的功能。

    LPC_TMR16B1->TCR = 0x02;                    //复位定时器TIM1且关闭
    LPC_TMR16B1->PWMC = 0x01;                 //选择通道0为pwm输出
    LPC_TMR16B1->PR = SystemCoreClock/1000-1;  // 设置分频系数
  	LPC_TMR16B1->MCR = 0x02<<6;   //设置通道2的特性:当TC和PC匹配时,TC复位(就是定时器的计数值到达通道2设置的数值时自动清零)
  	LPC_TMR16B1->MR2 = 1000;	//通道2设置的值为1000	
  	LPC_TMR16B1->MR0 = 0;	   //通道0设置的值为0              
    LPC_TMR16B1->TCR = 0x01;    //开启定时器

二、输入中断

1.简述

这一部分就比较简单了。大体分两个部分:(1)外部中断的配置;(2)中断管理器的配置。

2.步骤

	LPC_SYSCON->SYSAHBCLKCTRL |=(1<<16);    //?开启时钟
  LPC_IOCON->PIO1_8 &= ~0x07;
  LPC_IOCON->PIO1_8 |= 0x01;         //GPIO模式	
  LPC_GPIO1->DIR  &= ~(1UL <<  8);    //方向为输入,这句话不写也行,因为复位就是0.
  LPC_SYSCON->SYSAHBCLKCTRL &=~(1<<16);//关闭时钟
	LPC_GPIO1->IEV |= (1<<8); // 上升沿触发
	LPC_GPIO1->IE |= (1<<8);  // 中断开启

三、中断服务函数

void PIOINT1_IRQHandler()
{
	static int time=0;
		if((LPC_GPIO1->MIS&(1<<8))==(1<<8))
		{
			delay_xd();//进行一个延时,对按键消抖。
			if(KEY1_UP)//还是按下
			{
				time = time + 500;
//				if(time>=2000) time = 100;
				PWM_SET(time);
			}
			}
			LPC_GPIO1->IC = 0XFFF;  // ??RIS×′ì???
		}

四、主函数

int main (void){
	
  PWM_init();	
	KEY_init();
	NVIC_EnableIRQ(EINT1_IRQn);//开启
  while (1){                                
      
  }
  return 0;
 }

源码地址

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 16:02:04  更:2021-11-15 16:04:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:40:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码