0、通过TIM4实现类似STM32的uwTick功能
通过TIM4计时产生中断,每毫秒执行一次uwTick++。
1、设置TIM4分频与自动重装载值
设置TIM4分频
/* 1分频 */
TIM4->PSCR = (uint8_t)0x00;
/* 2分频 */
TIM4->PSCR = (uint8_t)0x01;
/* 4分频 */
TIM4->PSCR = (uint8_t)0x02;
/* 8分频 */
TIM4->PSCR = (uint8_t)0x03;
/* 16分频 */
TIM4->PSCR = (uint8_t)0x04;
/* 32分频 */
TIM4->PSCR = (uint8_t)0x05;
/* 64分频 */
TIM4->PSCR = (uint8_t)0x06;
/* 128分频 */
TIM4->PSCR = (uint8_t)0x07;
设置TIM4自动重装载值
/* TIM4_Period为需要设置的自动重装载值 */
TIM4->ARR = (uint8_t)(TIM4_Period);
TIM4计时触发公式
TIM4_Period= (time * TIM4_Counter_Clock - 1);
TIM4_Period 为设置的自动重装载值
time 为TIM4触发所需时间(s)
TIM4_Counter_Clock 为TIM4频率,等于主频率Fmaster/TIM4分频值(hz)
2、配置TIM4更新中断使能
/* 配置更新中断使能 */
TIM4->IER |= (uint8_t)0x01;
/* 配置更新中断禁止 */
TIM4->IER &= (uint8_t)(~0x00);
推荐在使能更新中断前清除可能产生的更新中断标志
TIM4->SR1 = (uint8_t)(~0x01);
3、使能TIM4
/* 使能TIM4 */
TIM4->CR1 |= (uint8_t)(0x01);
/* 禁用TIM4 */
TIM4->CR1 &= (uint8_t)(~0x01);
/* 使能中断 */
enableInterrupts();
4、设计全局uwTick
#define SYS_MAX_DELAY 0xFFFFFFFFU
__IO uint32_t uwTick;
/**
* @brief auto plus by Time4 , 1 per ms
* ----------------
*/
void SYS_IncTick(void)
{
uwTick++;
}
/**
* @brief get uwtick
* ----------------
*/
uint32_t SYS_GetTick(void)
{
return uwTick;
}
/**
* @brief delay
* ----------------
*/
void SYS_Delay(__IO uint32_t Delay)
{
uint32_t tickstart = SYS_GetTick();
uint32_t wait = Delay;
/* Add a period to guarantee minimum wait */
if (wait < SYS_MAX_DELAY)
{
wait++;
}
while ((SYS_GetTick() - tickstart) < wait)
{
}
}
5、配置软件中断函数
/* 软件中断函数 */
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
{
SYS_IncTick();
/* 清除更新中断标志 */
TIM4->SR1 = (uint8_t)(~0x01);
}
6、TIM4寄存器简介:
CR控制寄存器
IER中断使能寄存器
SR状态寄存器
EGR事件产生寄存器
CNTR计数器
PSCR预分频寄存器
ARR自动重装载寄存器
上一篇:STM8的TIM4定时器1ms进入中断
下一篇:关于STM8S105写EEPROM时产生的TIM中断问题
推荐阅读
史海拾趣
关于电蚊拍的基本电路,网友可能提出的问题及回答如下:
问题一:电蚊拍的基本电路由哪些部分组成?
回答:电蚊拍的基本电路主要由三个核心部分组成:阻容降压电路(或称为高频振荡电路)、倍压整流电路以及高压电击网。
-
阻容降压电路(高频振荡电路):这部分电路主要负责将直流电源(如电池提供的3V直流电)转换为高频交流电,通常频率在18kHz左右。这一转换过程由三极管和变压器等元件共同完成,通过变压器的升压作用,将电压提升到数百伏。
-
倍压整流电路:高频交流电经过升压后,进入倍压整流电路。这个电路通过多个二极管和电容的组合,将电压进一步升高到足以电击蚊虫的水平,通常可达到1500V左右。常见的倍压整流电路有三倍压、四倍压等多种连接方式。
-
高压电击网:高压电击网是电蚊拍的输出部分,由细密的金属网格构成。当蚊虫接触到金属网格时,会形成电路通路,导致蚊虫被高压电击死。
问题二:为什么电蚊拍使用一段时间后,电击效果会变差?
回答:电蚊拍使用一段时间后电击效果变差的原因可能包括以下几点:
-
电容老化:电蚊拍中的倍压电容(如CBB电容)在频繁充放电过程中会逐渐老化,其容量会逐渐下降,导致储能能力降低,从而影响电击效果。
-
元件损坏:电蚊拍中的二极管、三极管等元件在长时间使用后可能出现损坏或性能下降,导致电路无法正常工作或电压无法升到足够高的水平。
-
电池电量不足:电池是电蚊拍的能量来源,如果电池电量不足,将直接影响电蚊拍的电击效果。
-
金属网格污染或变形:金属网格在使用过程中可能会受到污染或变形,导致接触不良或短路,从而影响电击效果。
问题三:如何判断电蚊拍是否需要维修?
回答:可以通过以下几种方法来判断电蚊拍是否需要维修:
-
观察指示灯:如果电蚊拍的指示灯不亮或亮度明显降低,可能是电池电量不足或电路存在故障。
-
检查电击效果:如果电蚊拍在使用时电击效果变差或无法电击蚊虫,可能是电路中的元件损坏或老化。
-
测量电压:使用万用表等工具测量电蚊拍输出端的电压,如果电压明显低于正常值(如1500V左右),则说明电路存在问题。
-
检查金属网格:观察金属网格是否干净、平整、无变形或短路现象。
问题四:如何维修电蚊拍?
回答:维修电蚊拍需要一定的电子知识和技能,以下是一些基本的维修步骤:
-
检查电池:首先检查电池是否电量充足且接触良好。如果电池电量不足,应及时更换新电池。
-
清洁金属网格:使用软布或棉签等工具清洁金属网格上的污垢和灰尘。
-
检查并更换元件:如果确定是电路中的元件损坏导致的问题,应使用万用表等工具检测并更换损坏的元件。常见的损坏元件包括二极管、三极管、电容等。
-
调整电路:在更换元件后,可能需要调整电路中的某些参数(如电阻值、电容容量等)以确保电路能够正常工作。
-
测试电击效果:在维修完成后,应使用万用表等工具测试电蚊拍的电击效果是否恢复正常。
请注意,由于电蚊拍内部涉及高压电路,因此在维修过程中应确保安全操作,避免触电等危险情况的发生。如果不具备相关知识和技能,建议将电蚊拍送至专业维修机构进行维修。
1969年,大金成功开发了一台室外机连接多台室内机的家用多联系统空调。这一创新产品不仅提高了空调的能效比,还满足了大型住宅和办公场所的多样化需求。多联系统空调的诞生,使得大金在家用中央空调领域取得了领先地位。
如何枚举出同级的所有驱动设备地址? 比如:DEVICETREE中 Driver\\Kbdclass \\Device\\keyboardclass0 \\Device\\keyboardclass1 \\Device\\keyboardclass2 ...… 查看全部问答∨ |
承接电子设计(单片机)项目 (一)、PCB LAYOUT(2层 or 4层) 老牛承接专业抄板、画板,质优价廉,可每天查看画板进度,有问题及时沟通。 可加我QQ看画过的样板,因为老牛是个人接活,所以价钱肯定比抄板公司低,希望各位同行有活之余多多照顾。 ...… 查看全部问答∨ |
做一个程序,可以把CF卡内某文件夹内的若干.txt文件显示在视图列表中,现在想实现将任意一个.txt文件打开并显示文件中的内容。应该怎么做? 用什么函数怎么实现? 谢谢大家!!… 查看全部问答∨ |
|
$(\'swf_mXL\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMjY1NzQ4NDE2/v.sw ...… 查看全部问答∨ |
请问各位同仁,现在使用FPGA实现数字信号处理时,比如设计FIR滤波器、实现FFT、自适应滤波等方面好像基于DSPbuilder的越来越多。那么我请问凡用代码编写的例子都能够通过DSPbuilder模块搭建吗?现在还需要去琢磨以前的书籍上完全用代码写的例子吗? ...… 查看全部问答∨ |