1、买的STM8 value line discovery板刚到手,从最简单的STM8S003开始吧。
2、下载了STVD/COSMIC。COSMIC_32K坛里有和谐好的,不过要先下载原版安装。
3、争取今晚把LED点亮。
4、其实我很看好STM8L152,之后要测试一下耗电和ADC性能。
5、纯业余玩的,还没想好弄点啥……
/*************************************************************************
* Copyright (C) 1993-2009 by Company_name, Inc. All Rights Reserved
* Compiler: ***
* Designed: TANK99
* Build Date: 2012-4-29
* Version: 1.0
**************************************************************************
文 件:
功 能: Delay Function for the System, use Timer3
*************************************************************************/
/*************************************************************************
* Copyright (C) 1993-2009 by Company_name, Inc. All Rights Reserved
* Compiler: ***
* Designed: TANK99
* Build Date: 2012-4-29
* Version: 1.0
**************************************************************************
文 件:
功 能: Delay Function for the System, use Timer3
*************************************************************************/
#include "system.h"
#include "stm8s_tim3.h"
#include "delay.h"
//************************************************************************
#define TIMTICK (TIM3)
U8 Delay_sta = 0;
/*************************************************************************
功 能:初始化延时定时器
参数表:无
返回值:无
说 明:使用Timer3
*************************************************************************/
void Delay_ms_Init( void )
{
TIM3->CR1 = B0000_0100; // URS=1只有溢出才产生更新中断/UDIS=0允许更新事件/CEN=0 关定时器
TIM3->EGR |= B0000_0001; // 即时
TIM3_TimeBaseInit( TIM3_PRESCALER_32, 499 ); // 64分频: 2us Autoreload value: 500次 1ms定时
// TIM3->PSCR = (uint8_t)(TIM3_PRESCALER_32); // 32分频: 2us
// TIM3->ARRH = (uint8_t)(499 >> 8); // Autoreload value: 500次 1ms定时
// TIM3->ARRL = (uint8_t)(499);
TIM3->CNTRH = 0 ;
TIM3->CNTRL = 0 ;
TIM3->SR1 = 0; // clear overflow flag
TIM3->CR1 |= B0000_0001; // Start timer
Delay_sta = 1;
}
/*************************************************************************
功 能:毫秒级定时
参数表:INT毫秒数,输入1为1毫秒——
返回值:
说 明:使用Timer3
*************************************************************************/
// void Delay_ms( unsigned int ms )
void Delay( unsigned int ms )
{
if ( Delay_sta == 0 )
{
Delay_ms_Init( );
}
else
{
TIM3->CR1 |= B0000_0001; // Start timer
}
while ( ms -- )
{
while( ( TIM3->SR1 &= TIM3_IT_UPDATE ) == 0 )
{
;
}
TIM3->SR1 = 0; // clear overflow flag
}
TIM3->CR1 = B0000_0000; // Stop timer
}
/*************************************************************************
功 能:微秒级定时
参数表:INT微秒数,输入1为1微秒( 输入输出有较大延时.............. )
返回值:
说 明:使用Timer3
*************************************************************************/
void Delayus(uint16_t us)
{
TIM3->CR1 = B0000_0100; // URS=1只有溢出才产生更新中断/UDIS=0允许更新事件/CEN=0 关定时器
TIM3_TimeBaseInit( TIM3_PRESCALER_16, us ); // 16分频: 1us Autoreload value: N次 N us定时
// TIM3->PSCR = (uint8_t)(TIM3_PRESCALER_16); // 16分频: 1us
// TIM3->ARRH = (uint8_t)(us >> 8); // Autoreload value: N次 N us定时
// TIM3->ARRL = (uint8_t)(us);
TIM3->CNTRH = 0 ;
TIM3->CNTRL = 0 ;
TIM3->EGR |= B0000_0001; // 即时
TIM3->SR1 = 0; // clear overflow flag
TIM3->CR1 |= B0000_0001; // Start timer
Delay_sta = 0;
while( ( TIM3->SR1 &= TIM3_IT_UPDATE ) == 0 )
{
;
}
TIM3->CR1 = B0000_0000; // Stop timer
TIM3->SR1 = 0; // clear overflow flag
}
//********************************* END ********************************
一周热门 更多>