当前位置:首页 > 单片机 > 单片机
[导读]芯片的外设一般按照这么几个流程来进行,GPIO,外部中断,定时器,串口,ADC,IIC,SPI,下面我就按照各个模式来写 首先是GPIO,STM8的GPIO拥有复用功能,这句话告诉我们必然需要配置IO的复用功能才能使用,看这张表DDR决定输入

芯片的外设一般按照这么几个流程来进行,GPIO,外部中断,定时器,串口,ADC,IIC,SPI,下面我就按照各个模式来写

首先是GPIO,STM8的GPIO拥有复用功能,这句话告诉我们必然需要配置IO的复用功能才能使用,看这张表



DDR决定输入输出方向,CR1 CR2决定输入输出模式,上拉,下拉,推挽,开漏等

主要依靠这几个寄存器



还有一个控制寄存器2,懒得传了




按照这张表,输出写输出寄存器,输入读输入寄存器,就能完成GPIO的操作了

以下是操作代码

#include"key.h"

u8keyValue=0;

#defineKEY1_IN(GPIOD->IDR&0X80)

#defineKEY2_IN(GPIOE->IDR&0X08)

staticvoidDelay(u16nCount)

{

/*DecrementnCountvalue*/

while(nCount!=0)

{

nCount--;

}

}

voidKeyInit(void)

{

//D7初始化

GPIOD->DDR&=~(1<<7);//设置为输入

GPIOD->CR1|=(1<<7);

GPIOD->CR2&=~(1<<7);//10上拉输入

//E3初始化

GPIOE->DDR&=~(1<<3);//设置为输入

GPIOE->CR1|=(1<<3);

GPIOE->CR2&=~(1<<3);//10上拉输入

}

u8KeyScan(void)

{

if(KEY1_IN==0)

{

Delay(16000);

if(KEY1_IN==0)

{

keyValue=KEY_VALUE1;

returnKEY_VALUE1;

}

}

if(KEY2_IN==0)

{

Delay(16000);

if(KEY2_IN==0)

{

keyValue=KEY_VALUE2;

returnKEY_VALUE2;

}

}

return0;

}


#ifndef__KEY_H_

#define__KEY_H_

#include"stm8s.h"

//按键使用D7E3

//按键按下低电平,按键松开高电平

#defineKEY_VALUE11

#defineKEY_VALUE22

externu8keyValue;

voidKeyInit(void);

u8KeyScan(void);

#endif


#include"led.h"

voidLedInit(void)

{

//D1初始化

GPIOD->DDR|=(1<<1);//设置为输出

GPIOD->CR1|=1<<1;

GPIOD->CR2&=~(1<<1);//10推挽输出

//d0

GPIOD->DDR|=(1<<0);//设置为输出

GPIOD->CR1|=1<<0;

GPIOD->CR2&=~(1<<0);//10推挽输出

//c3

GPIOC->DDR|=(1<<3);//设置为输出

GPIOC->CR1|=1<<3;

GPIOC->CR2&=~(1<<3);//10推挽输出

LedSet(1,1);

LedSet(2,1);

LedSet(3,1);

}

voidLedSet(u8ch,u8value)

{

switch(ch)

{

case1:

if(value)GPIOD->ODR|=1<<1;

elseGPIOD->ODR&=~(1<<1);

break;

case2:

if(value)GPIOD->ODR|=1<<0;

elseGPIOD->ODR&=~(1<<0);

break;

case3:

if(value)GPIOC->ODR|=1<<3;

elseGPIOC->ODR&=~(1<<3);

break;

}

}



#ifndef__LED_H_

#define__LED_H_

#include"stm8s.h"

//led1PD1swim

//led2pd0

//led3pc3d12_cs

voidLedInit(void);

voidLedSet(u8ch,u8value);

#endif



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭