stm32定时器用于外部脉冲计数
更新时间:2024-05-06 23:01:01 阅读量: 综合文库 文档下载
- stm32定义变量推荐度:
- 相关推荐
因为用stm32f103c8作主控制器,来控制小车,小车的转速由两路光电编码盘输入(左右各一路).因此想到外部时钟触发模式(TIM——ETRClockMode2Config)。
可以试好好久,发现TIM1不能计数,到网上查了很久,也没有找到相关的文章,开始怀疑TIM1是不是需要特殊设置。经过很久的纠结,终于找到了问题——其实是我自己在GPIO设置的时候,后面的不小心覆盖了前面的了——没想到自己也会犯这么SB的事情。 现总结程序如下: 第一步,设置GPIO
GPIO_InitTypeDef GPIO_InitStructure; /* PA0,PA12-> 左右脉冲输入 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 GPIO_Init(GPIOA, &GPIO_InitStructure);
注意:(1)stm32f103c8只有TIM1_ETR(PA12,Pin33),和TIM2_CH1_ETR(PA0,Pin10)两个可以用。其它更多管脚的芯片,有更多的可以输入(如100管脚的有4个可以输入的);(2)外部时钟输入与中断无关;(3)stm32f103c8的这个两个应用中,不需要重映射。 对于哪些需要重映射,参考数据手册。 第二步:设置RCC
RCC_ClocksTypeDef RCC_ClockFreq;
SystemInit();//源自system_stm32f10x.c文件,只需要调用此函数,则可完成RCC的配置. RCC_GetClocksFreq(&RCC_ClockFreq);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); 第三步,设置定时器模式
void TIM1_Configuration(void) //只用一个外部脉冲端口 {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//配置TIMER1作为计数器 TIM_DeInit(TIM1);
TIM_TimeBaseStructure.TIM_Period = 0xFFFF; TIM_TimeBaseStructure.TIM_Prescaler = 0x00; TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); // Time base configuration
TIM_ETRClockMode2Config(TIM1, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0); TIM_SetCounter(TIM1, 0); TIM_Cmd(TIM1, ENABLE); }
void TIM2_Configuration(void) //只用一个外部脉冲端口 {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//配置TIMER2作为计数器 TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period = 0xFFFF; TIM_TimeBaseStructure.TIM_Prescaler = 0x00; TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); // Time base configuration
TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0); TIM_SetCounter(TIM2, 0); TIM_Cmd(TIM2, ENABLE); }
第四步,可以在主函数中读取计数器的值,其它的应用,就看具体的情况了。 u16 COUN1=0; u16 COUN2=0; int main(void) {
ChipHalInit(); ChipOutHalInit(); while(1) {
COUN1=TIM1->CNT;
COUN2=TIM2->CNT; } }
正在阅读:
stm32定时器用于外部脉冲计数05-06
宿迁市市区房屋建筑工程竣工验收备案管理办法(试行)06-11
厦门旅游经典攻略06-04
2018-2024年中国植脂末行业市场行情动态报告(目录) - 图文01-27
普通高中地理课程标准-2017修订版05-14
爱情的幸福(演讲稿)-演讲致辞模板02-26
住宅楼(混合)施工组织设计08-25
湖南商学院是几本院校具体地址在哪里?一年学费多少好就业吗?03-29
保护环境,从你我开始作文500字07-09
- 企业安全培训试题题库
- 《WEB应用开发》复习题
- 2018届河南省新乡市高三第三次模拟测试英语试题Word版含答案
- 山东省建设工程优质结构评审标准(试行)
- 2016-2022年中国MEMS行业分析及发展趋势预测报告 - 图文
- 工程材料习题和练习 - 图文
- 2013--2014年小学六年级数学毕业水平检测卷及答案
- 江苏省2017-2018学年高考模拟历史试题分解(现代世界经济) Word版
- 移动通信实验指导书
- 2017-2018年最新审定新人教版六年级语文新人教版小学语文六年级
- 会展案例分析教案
- 数据库复习题
- 情智作文之学会选材
- 高一年级十月月考地理试题
- 河南省教育科学“十三五”规划2018年度一般课题立项名单
- 大学生宿舍文化现象调查与分析
- 山东省潍坊市2010届高三第二次模拟考试 理综 Word版
- 风险管理简答题
- 大连广播电视大学
- 民航安全管理经典论文
- 定时器
- 脉冲
- 计数
- 外部
- 用于
- stm32
- 2011全国中考最新题型选粹――旋转题
- 文章精彩语句选编
- 中外货物买卖协议
- 安全生产管理制度1
- 安徽省中小企业国际市场开拓资金实施办法
- 九九乘法表EDA课设
- 平板挤压式核桃破壳机的设计
- VxWorks kernal programmers guide
- 上海中考英语考纲单词默写
- MAS2.0 WebService接口插件开发手册
- 刘芬《三国演义》1-60回默写检测
- 中信武汉后湖商业地产专项资产管理计划资产管理合同(定稿)
- 计算机应用基础习题
- 2012二级建造师《建筑工程管理与实务》考前押题卷(12)-中大网校
- 中国矿业大学班主任工作考核评估实施办法
- 关于手车开关柜的通道宽度
- 济南市优质建筑结构工程创优计划目标和质量保证措施(1)
- 广东中小企业融资难问题研究
- 医疗器械操作管理程序 - 图文
- 固体废物处置与利用 考试资料