STM8S105S4_PKT学习笔记(2) 外部中断

原创 2012年03月30日 12:29:38

button-->PD7

Led -->PD0



main.c:

/* MAIN.C file
 * 
 * Copyright (c) 2002-2005 STMicroelectronics
 */
#include "stm8s207s6.h"

void Clock_Init(void)
{
	CLK_SWCR |= 0x02;//使能切换机制
	CLK_ECKR |= 0x01;//外部晶振使能
	while(!(CLK_ECKR & 0x02));//等待HSE准备就绪
	CLK_SWR  = 0xB4;//选择HSE为主时钟
	CLK_CSSR |= 0x01;//时钟安全系统使能
}

void Gpio_Init(void)
{
	PD_DDR |= 0x01;
	PD_CR1 |= 0x01;
	PD_CR2 |= 0x80;
}

void Exti_Init(void)
{
	EXTI_CR1 |= 0x80;
}

main()
{
	_asm("sim");
	Clock_Init();
	Gpio_Init();
	Exti_Init();
	_asm("rim");
	while (1)
	{
	}
}

stm8_interrupt_vector.c:

/*	BASIC INTERRUPT VECTOR TABLE FOR STM8 devices
 *	Copyright (c) 2007 STMicroelectronics
 */
#include "stm8s207s6.h"

typedef void @far (*interrupt_handler_t)(void);

struct interrupt_vector {
	unsigned char interrupt_instruction;
	interrupt_handler_t interrupt_handler;
};

@far @interrupt void NonHandledInterrupt (void)
{
	/* in order to detect unexpected events during development, 
	   it is recommended to set a breakpoint on the following instruction
	*/
	return;
}

@far @interrupt void Exti_Interrupt (void)
{
	/* in order to detect unexpected events during development, 
	   it is recommended to set a breakpoint on the following instruction
	*/
	PD_ODR ^= 0x01;
	return;
}

extern void _stext();     /* startup routine */

struct interrupt_vector const _vectab[] = {
	{0x82, (interrupt_handler_t)_stext}, /* reset */
	{0x82, NonHandledInterrupt}, /* trap  */
	{0x82, Exti_Interrupt}, /* irq0  */
	{0x82, NonHandledInterrupt}, /* irq1  */
	{0x82, NonHandledInterrupt}, /* irq2  */
	{0x82, NonHandledInterrupt}, /* irq3  */
	{0x82, NonHandledInterrupt}, /* irq4  */
	{0x82, NonHandledInterrupt}, /* irq5  */
	{0x82, NonHandledInterrupt}, /* irq6  */
	{0x82, NonHandledInterrupt}, /* irq7  */
	{0x82, NonHandledInterrupt}, /* irq8  */
	{0x82, NonHandledInterrupt}, /* irq9  */
	{0x82, NonHandledInterrupt}, /* irq10 */
	{0x82, NonHandledInterrupt}, /* irq11 */
	{0x82, NonHandledInterrupt}, /* irq12 */
	{0x82, NonHandledInterrupt}, /* irq13 */
	{0x82, NonHandledInterrupt}, /* irq14 */
	{0x82, NonHandledInterrupt}, /* irq15 */
	{0x82, NonHandledInterrupt}, /* irq16 */
	{0x82, NonHandledInterrupt}, /* irq17 */
	{0x82, NonHandledInterrupt}, /* irq18 */
	{0x82, NonHandledInterrupt}, /* irq19 */
	{0x82, NonHandledInterrupt}, /* irq20 */
	{0x82, NonHandledInterrupt}, /* irq21 */
	{0x82, NonHandledInterrupt}, /* irq22 */
	{0x82, NonHandledInterrupt}, /* irq23 */
	{0x82, NonHandledInterrupt}, /* irq24 */
	{0x82, NonHandledInterrupt}, /* irq25 */
	{0x82, NonHandledInterrupt}, /* irq26 */
	{0x82, NonHandledInterrupt}, /* irq27 */
	{0x82, NonHandledInterrupt}, /* irq28 */
	{0x82, NonHandledInterrupt}, /* irq29 */
};

效果:按下按键,灯亮,再次按下,灯灭

STM8S105S4_PKT学习笔记(1) LED灯

工程框图: 环境:STVD + Cosmic 程序: #include "STM8S207S6.h" void Delay(unsigned int count) { ...

STM8S105s4-pkt触摸按键

  • 2011年11月12日 10:32
  • 308KB
  • 下载

STM8S105K4 SPI相关代码

/* 初始化函数 */ void SPI_FLASH_Init(void) {    SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_2, SPI_M...

STM8S003xx学习笔记(2):16位高级控制定时器(TIM1)

在单片机中定时器是一个非常重要的概念,这篇文章主要是对定时器TIM1做一个学习笔记。 1 综述 STM8S003xx只含有TIM1、TIM2、TIM4,其中TIM1是高级控制寄存器,TIM2和TIM4...

stm8s串口奇偶校验学习笔记

以前用过stm32的串口,不过用的时候一般都是调用库函数,设置波特率,8位数据位,无校验,1位停止位。传输过程中也没有遇到过太多的问题,最近用stm8s,需要用到奇偶校验(至于什么是奇偶校验,网上资料...
  • lostand
  • lostand
  • 2017年03月16日 13:29
  • 660

STM8S105无刷控制器程序

  • 2015年12月17日 13:51
  • 888KB
  • 下载

STM8S105xx_Datasheet_CH_V6[1]

  • 2014年01月12日 00:29
  • 2.69MB
  • 下载

STM8S---TIM2产生PWM与TIM1定时器周期中断的时钟问题

1 问题  在下面的测试程序中,如果将Init_CLK()函数中的 CLK_CKDIVR |= 0x08;去掉’|‘,则TIM1的功能实现跟预设定相同(10ms中断一次),但是TIM2的PWM频率就变...
  • FreeApe
  • FreeApe
  • 2015年07月08日 12:48
  • 3838

STM8S105K6T6CTR

  • 2013年10月09日 13:35
  • 1.3MB
  • 下载

stm8s105x pdf

  • 2011年07月05日 09:58
  • 1.29MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM8S105S4_PKT学习笔记(2) 外部中断
举报原因:
原因补充:

(最多只允许输入30个字)