第一范文网 - 专业文章范例文档资料分享平台

stm8s的c语言编程例程

来源:用户分享 时间:2025/8/6 10:59:42 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

#pragma vector=15

__interrupt void TIM2_UPD_OVF_BRK_IRQHandler (void) {

GPIO_WriteReverse(GPIOD, GPIO_PIN_2); TIM2_ClearITPendingBit(TIM2_IT_UPDATE); }

//////////通用寄存器TIM2,3,5既然这样应该没有太大的区别 #pragma vector=6

__interrupt void EXIT_PORTB_IRQHander(void) {

if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0x00) {

temp++; if(temp%2==0) TIM2_Cmd(ENABLE); else

TIM2_Cmd(DISABLE); } }

/*************程序实现功能:按键控制灯以不同的频率闪动***************/ /************即实现功能为,发光二极管分别以1S,2S,3S的周期闪烁*******/ #include \

#define uchar unsigned char #define uint unsigned int #define ulong unsigned long unsigned int temp; void delay(ulong i) {

ulong j;

for(j=0;j

void CLK_Configuration(void); void GPIO_Configuration(void); void TIM2_Configuration(void); void EXIT_Configuration(void); void main(void) {

CLK_Configuration();

GPIO_Configuration(); EXIT_Configuration(); TIM2_Configuration(); enableInterrupts(); while (1) { } }

void CLK_Configuration(void) {

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); }

void GPIO_Configuration(void) {

GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOD);

GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_IN_FL_IT); }

void TIM2_Configuration(void) {

TIM2_DeInit();///设置timer2定时器 TIM2_TimeBaseInit( TIM2_PRESCALER_2048 ,8000); /*对TIM2时钟进行预分频得到计数时钟 */

TIM2_ITConfig(TIM2_IT_UPDATE ,ENABLE); /*允许更新中断使能*/

// TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE); /*设置事件源为更新事件*/

// TIM2_UpdateRequestConfig(TIM2_UPDATESOURCE_REGULAR );/*更新请求使能,只有当计数器溢出时产生更新中断*/

// TIM2_SelectOnePulseMode( TIM2_OPMODE_REPETITIVE ); /*发生更新事件时计数器不停止*/

TIM2_SetCounter(65536-8000); /*16位向上计数器初值*/

TIM2_Cmd(ENABLE); /*使能计数器*/ }

void EXIT_Configuration(void) {

EXTI_DeInit();

EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_FALL_ONLY); }

/*TIM2定时/向上溢出中断编号为13,中断编号+2*/ #pragma vector=15

__interrupt void TIM2_UPD_OVF_BRK_IRQHandler (void) {

GPIO_WriteReverse(GPIOD, GPIO_PIN_2); TIM2_ClearITPendingBit(TIM2_IT_UPDATE); }

//////////通用寄存器TIM2,3,5既然这样应该没有太大的区别 #pragma vector=6

__interrupt void EXIT_PORTB_IRQHander(void) {

if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0x00) {

temp++;

if(temp%2!=0)

TIM2_Cmd(DISABLE); else {

TIM2_Cmd(ENABLE);/////////////注意使能位的开通一定不要丢掉了 switch(temp) {

case 2:TIM2_TimeBaseInit( TIM2_PRESCALER_2048 ,8000);break; case 4:TIM2_TimeBaseInit( TIM2_PRESCALER_4096 ,8000);break; case 6:TIM2_TimeBaseInit( TIM2_PRESCALER_8192 ,8000);break; default:TIM2_TimeBaseInit( TIM2_PRESCALER_2048 ,8000),temp=1; } } } }

以下这个程序与上相同:

/*************程序实现功能:按键控制灯以不同的频率闪动*******************/

#include \

#define uchar unsigned char #define uint unsigned int

#define ulong unsigned long unsigned int temp; void delay(ulong i) {

ulong j;

for(j=0;j

void CLK_Configuration(void); void GPIO_Configuration(void); void TIM2_Configuration(void); void EXIT_Configuration(void); void main(void) {

CLK_Configuration(); GPIO_Configuration(); EXIT_Configuration(); TIM2_Configuration(); enableInterrupts(); while (1) { } }

void CLK_Configuration(void) {

/* Fmaster = 16MHz */

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); }

void GPIO_Configuration(void) {

/* GPIOD reset */ GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOD);

/* Configure PD1 (LED1) as output push-pull low (led switched on)10MHZ */

GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_IN_FL_IT); }

void TIM2_Configuration(void)

搜索更多关于: stm8s的c语言编程例程 的文档
stm8s的c语言编程例程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3bmu22364k7b3ef98nex_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top