前言:STM8S003配置TIM4频率设置在100kHz,即10us中断一次
问题:想要配置100k,但是顶死了60k,这么配置都上不去!
疑惑:库函数和寄存器到底有多大差别?
正文:
1 配置TIM4基本定时器(计数器只有256个)
// TIM4_DeInit();
TIM4_TimeBaseInit(TIM4_PRESCALER_16,9 ); //10us 16M/16/(9+1)=100kHz
// TIM4_ClearFlag(TIM4_FLAG_UPDATE); //清除标志位
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE); //使能更新UPDATE中断 //计数值归零
enableInterrupts();
TIM4_Cmd(ENABLE);
总共6句话,我挨个注释它到底起不起作用(老总曾说我,不从根本考虑问题,只在做表面)
2 初始化配置好了,在此之前,配置时钟,再初始化一个IO口控制亮灯
CLK->CKDIVR = 0x00;//CPU 16MHz
GPIO_Init(GPIOC, (GPIO_Pin_TypeDef)GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);
3再在it.c文件找到TIM4的中断方法
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
{
TIM4->SR1 = 0;//TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
if(j==0)
{
j=1;
GPIOC->ODR &=~GPIO_PIN_6;//GPIO_WriteHigh(GPIOC,GPIO_PIN_6);
}
else
{
j=0;
GPIOC->ODR |= GPIO_PIN_6;//GPIO_WriteLow(GPIOC,GPIO_PIN_6);
}
}
原谅我一上来就直接贴寄存器代码,因为被库函数害惨了
操作寄存器反转IO口,它能达到100kHz的频率
操作库函数反转IO口,最高只有60kHz
4耗时2天解决,居然是库函数导致的,尤其是中断中执行库函数,也有可能不支持STM8S003,让我对库函数越来越失望了
了结:同样频率上不去的朋友可以看看是不是寄存器和库函数影响的!
关键字:STM8S TIM 最高频率
引用地址:
STM8S关于TIM最高频率设置的坑
推荐阅读最新更新时间:2024-03-16 16:10
STM32CUBEIDE(12)----定时器TIM捕获PWM测量频率与占空比
概述 本章 STM32 CUBEMX配置STM32F103输出PWM,并在 示波器 中查看效果。 最近在弄ST和GD的课程,需要GD样片的可以加群申请:615061293 。 生成例程 使用STM32CUBEMX生成例程,这里使用NUCLEO-F103RB开发板 查看原理图,PA2和PA3设置为开发板的串口。 配置串口。 查看原理图,PA8设置为PWM输出管脚,PA0设置为 定时器 输入捕获管脚。 配置 时钟 树 配置时钟为64M。 配置PWM 配置定时器1输出pwm的频率为1K。 配置输入捕获 开启中断 STM32CUBEIDE配置 若需要打印浮点型,需要勾选下面的选项。 串口重定向
[单片机]
stm32tim定时器AutoReload和pwm输出Pulse的关系
老是理不清定时器的自动重装载和PWM通道Pulse的关系 先说PSC和AutoReload的关系 PSC是预分频 ST32F103频率可以上到72M 举个例子: 72000000/72=1M 1/1M=1/1000000=0.000001秒 预分配会影响自动重装载的计数速度 比如上面计算的,他可以0.000001s计一个数 当计到AutoReload的值时,就会产生一个中断 /*中断回调函数*/ pwm的脉冲数Pulse: 在AutoReload的计数周期内,设置脉冲的多少。 比如说舵机 要20ms的周期,那么根据公式: 定时器时间=1/(时钟频率/预分频/计数周期) 20ms=1/(72000000/
[单片机]
STM8S单片机入门(前言)
STM8S单片机是一款广泛使用的8位低功耗单片机,具备系统成本低、功能强大等特点。功能强大也带来了学习入门相对较难的问题。本入门教程面向无任何单片机基础的人,从开发环境的搭建开始,通过详细讲解一个典型单片机应用系统最基本设计和实现过程,帮助大家快速入门。 单片机应用系统的形态很多,但基本模式类似。以智能硬件的应用为例,各种智能硬件区别大多是输入电路(各种传感器及外部信号输入)和输出电路(控制电路、动作电路)的不同,基础部分单片机、电池和充电管理、无线数据模块都是类似的。 所以本入门教程选取包含开关机电路、锂电池充电及电源管理、蓝牙无线接口的一个单片机应用实例,通过讲解这些功能的实现过程,把 STM8S单片机的G
[单片机]
STM8S_010_I2C读写EEPROM (硬件方式)
Ⅰ 写在前面 相信看过前面那篇文章“更加深入理解 I2C总线、协议及应用”的人,对I2C都有一定的了解了。那篇文章是针对I2C使用单片机IO模拟I2C方式实现读写操作。 本文将讲述硬件I2C读写操作,也就是由处理器自身硬件的I2C实现时钟、数据的传输过程。 为方便大家阅读,本文内容已经整理成PDF文件: http://pan.baidu.com/s/1i5uWhJR Ⅱ STM8硬件I2C知识 STM8S的I2C模块不仅可以接收和发送数据,还可以在接收时将数据从串行转换成并行数据,在发送时将数据从并行转换成串行数据。可以开启或禁止中断。接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。允许连接到标准(最高
[单片机]
TIM2定时器中断与中断嵌套
/************************************************************ Copyright (C), 2012-2022, yin. FileName: main.c Author: ycw Version : 1.0 Date: 2012.04.22 Description: TIM2 EXIT0 NVIC Version: V1.0 Function List: TIM2 EXIT0 NVIC History: author time version desc YCW 12/04/22 1.0
[单片机]
STM8S单片机入门2(关机模式开关机按钮)
开关机功能是使用电池供电系统的最基本功能。如果使用机械式开关(2段拨动开关,自锁开关等)等直接接通和切断电源,不说机械部件的可靠性,至少自动关机(一般在长时间不操作、电池电量低时需要自动关机)功能就比较难实现。所以电池供电系统一般采用按钮开关,用一个按钮配合软件实现按一次开机、再按一次关机的功能及自动关机的功能。 这部分内容就讲述如何在STM8S上实现一键式的开关机功能。开关机功能要使用单片机的一个引脚(PD4)作为输入端,连接到按钮,接收按纽按下产生的电信号,然后再使用另一个引脚(PD3)作为输出端去驱动由三极管8550构成的一个电子开关实现对系统电源的控制。而STM8S单片机本身就直接接在电池上,利用单片机的停机模
[单片机]
stm8s开发(七) SPI的使用:SPI主机通信!
科普SPI:是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,分别是:SCK(时钟)、MOSI(主机发送数据)、MISO(主机接收数据)、NSS(片选),其中NSS的片选信号,大部分情况下我们使用的是软件NSS,即为使用一个GPIO进行软件控制片选。值得注意的是,其中SPI有4中模式:分别是空闲时SCLK的电平高低、MISO采样时第12个变化沿。 stm8s的SPI结构如下图, 如果用形象的比喻的话:SCK像一个发条齿轮,只有当发条齿轮转动的时候(SCK输出8个时钟),MOSI才能将1Byte的数据发送出去,同时,MISO将1Byte的数据接收回来。 使用SPI无非就一个初
[单片机]
TI 推出业界最高动态范围124 dB 信噪比的216 kHz采样频率立体声ADC
24 位器件的低功耗与高集成度为实现卓越专业音频性能打下良好基础 2007 年 4 月 5 日,北京讯 日前,德州仪器 (TI) 宣布推出两款 24 位 216 kHz 模数转换器 (ADC),从而进一步完善了高性能音频信号链,以满足专业数字音频录制与处理应用的需求。新型双通道器件实现了高集成度与业界最高动态范围的完美结合,在确保高达 124 dB 信噪比 (SNR) 的同时,其功耗仅为同类竞争产品的 50%。更多详情,敬请访问: http://focus.ti.com.cn/cn/docs/prod/folders/print/pcm4220.html 。 Focusrite Audio Engineering 公司产品战
[新品]