新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2014-12-11
- 在线时间
- 2 小时
|
1金钱
各位仁兄,我最近在调stm8s103f3碰到一个问题,我想用外部时钟模式一来实现外部时钟的计数,我用的的TI1(TIM1_CH1)端口,一下是我配置的代码,搞了我久久,它 就是不计数,愿各位高手多多相助。
/* Includes ------------------------------------------------------------------*/
#include "stm8s.h"
//#include<iostm8s103f3.h>
#include "sysclock.h"
#include "led.h"
#include "stm8s_uart1.h"
#include "uart1.h"
#include "stm8s_tim1.h"
unsigned int Time1Cnt;
/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
**函数名称:void delay(unsigned int ms)
**功能描述:大概延时
**入口参数:unsigned int ms 输入大概延时数值
**输出:无
*******************************************************************************/
void delayms(unsigned int ms)
{
unsigned int x , y;
for(x = ms; x > 0; x--) /* 通过一定周期循环进行延时*/
for(y = 327 ; y > 0 ; y--); //内部时钟 2M
}
/*************************************
Tim1_CNT_Init
**************************************/
void Tim1_CNT_Init()
{
GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT); //管脚邋TI1配置
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE); //打开timer1 时钟
TIM1->CCMR1 |= 0x02 ; //CC1配置为输入,映射在TI
TIM1->CCMR1 &= 0x0f; //不使用滤波器
//TIM1->CR2 |=0x80; //管脚异或后连到邋TI1
// TIM1->CCER1 &= 0xfd; //选择上升沿触发
TIM1->CCER1 |= 0x02; //选择上升沿触发
TIM1->SMCR |=0x07; //选择外部时钟模式1
TIM1->SMCR |=0x50; // 滤波后接到TIFP1
TIM1->CR1 |= 0x01; //启动定时器
// TIM1->IER |= 0x40; //使能触发中断
TIM1->ARRH = 0x04;
TIM1->ARRL = 0x45;
TIM1->CNTRH = 0x00;
TIM1->CNTRL = 0x00;
}
int main(void)
{
/* 设置外部24M晶振为系统时钟 */
//SystemClock_Init(HSE_Clock);
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV8); //内部时钟为8分频 = 2Mhz
asm("sim"); //关全局中断
// LED_Init(); //调用LED初始化函数
Uart1_Init();
Tim1_CNT_Init();
asm("rim"); // 开全局中断
enableInterrupts(); /* 开启总中断 */
while (1)
{
// LED_ShowOneToOne(); /* 流水灯 */
delayms(500);
Time1Cnt = TIM1_GetCounter();
UART1_SendData8(Time1Cnt);
/* 等待接收中断 */
}
}
|
|
|