OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3543|回复: 5

stm8s103f3外部时钟模式1计数器

[复制链接]

1

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-12-11
在线时间
2 小时
发表于 2016-11-8 20:17:31 | 显示全部楼层 |阅读模式
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);        
          /* 等待接收中断 */
        }
}



最佳答案

查看完整内容[请看2#楼]

用STVP来修改选项字节。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

599

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2109
金钱
2109
注册时间
2011-9-3
在线时间
119 小时
发表于 2016-11-8 20:17:32 | 显示全部楼层
用STVP来修改选项字节。
回复

使用道具 举报

32

主题

881

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3928
金钱
3928
注册时间
2015-11-14
在线时间
535 小时
发表于 2016-11-8 20:45:17 | 显示全部楼层
需要修改选项字节,我用的是S003应该和你的是一样的
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-12-11
在线时间
2 小时
 楼主| 发表于 2016-11-9 09:32:59 | 显示全部楼层
Electronic 发表于 2016-11-8 20:45
需要修改选项字节,我用的是S003应该和你的是一样的

在哪里修改选项字啊,能不能发你的完整代码看看啊,谢谢
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-12-11
在线时间
2 小时
 楼主| 发表于 2016-11-9 15:07:24 | 显示全部楼层
螃蟹爱虫 发表于 2016-11-9 14:40
用STVP来修改选项字节。

谢谢,已经OK 啦
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-12-11
在线时间
2 小时
 楼主| 发表于 2016-11-9 15:07:46 | 显示全部楼层
caige 发表于 2016-11-9 09:32
在哪里修改选项字啊,能不能发你的完整代码看看啊,谢谢

谢谢你,已经OK啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-29 05:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表