STM8S单片机为什么外部按键中断跟AWU一起使用,外部按键按着按着就会复位掉,谁知道这是怎么回事呢? 5

STM8S单片机为什么外部按键中断跟AWU一起使用,外部按键按着按着就会复位掉,谁知道这是怎么回事呢?... STM8S单片机为什么外部按键中断跟AWU一起使用,外部按键按着按着就会复位掉,谁知道这是怎么回事呢? 展开
 我来答
匿名用户
2014-12-04
展开全部
//此例程是通过TIM2 CH1(PD4脚)通道来输出一个频率2K 占空比可调的方波,占空比可通过PD7脚的按键调

#include "STM8S105K.h"
typedef unsigned char u8;
typedef unsigned int u16;
u16 value;

void SystemInit(void)
{
CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M
CLK_PCKENR1 |= 0x60; //使能TIM2与TIM3与主频连接
PD_CR2 |= 0x80; //使能PD7口外部中断
}

void GPIO_init(void)
{
PD_DDR = 0x1F; //配置PD端口的方向寄存器全输出
PD_CR1 = 0x1F; //设置PD为推挽输出
}

void TIM2_init(void) //TIM2 CH1 工作于模式1
{
TIM2_CCMR1= 0x60; // PWM 模式 1,TIM2 CH1
TIM2_CCER1= 0x03; // CC1配置为输出
TIM2_ARRH = 0x07; // 配置PWM分辨率为10位,ARR=0x07D0
TIM2_ARRL = 0xD0; // PWM频率=8M/0x07D0=2000Hz
TIM2_CR1 |= 0x01; // 计数器使能,开始计数
}

void init_devices(void)
{
asm("sim");
SystemInit();
GPIO_init();
TIM2_init();
_asm("rim"); //开总中断
}

void main( void )
{
init_devices();
while(1)
TIM2_CCR1=value;//改变value值可改变频率
}

/****************************************************************************
*** 函数名 : @near @interrupt void TLI_IRQHandler (void)
*** 功能描述: 中断服务程序
按下PD7口按键来改变占空比
*****************************************************************************/
@near @interrupt void TLI_IRQHandler (void)

{
PD_CR2 &= 0x7F; //关PD7外部中断
value+=50;
while(value>1000)
value=0;
PD_CR2 |= 0x80; //使能PD7口外部中断
return;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式