Mackdown阅读
一、起因
由于自己学习stm32单片机是零零散散的学习的,没有系统的进行学习,学习的东西非常的混乱,没有做过什么整体的框架整理,所以在此将stm32的外设的初始化进行系统的打包成一个文档,把程序的过程进行整理。
二、基本流程
1、基本stm32基本硬件知识点
stm32的单片机的开发程序发展的流程基本都是从寄存器阶段到标准库阶段到现在的hal库、RTOS。所以第一步我们需要清楚单片机的整体工作流程
通过图上可以看出,stm32单片机有一个cortex-M3的内核CPU控制,分出三条数据总线控制各个外设,指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总线负责对代码存储区(即 FLASH 外设)的访问,分别是 I-Code 总线和 D-Code 总线。
I-Code用于取指,D-Code用于查表等操作,它们按最佳执行速度进行优化。
系统总线(System)用于访问内存和外设,覆盖的区域包括SRAM,片上外设,片外RAM,片外扩展设备,以及系统级存储区的部分空间。
私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。
还有一个DMA总线,从字面上看,DMA是data memory access的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受CPU的控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大控制的数据搬运工。
从结构框图上看,STM32的外设有串口、定时器、IO口、FSMC、SDIO、SPI、I2C等,这些外设按照速度的不同,分别挂载到AHB、APB2、APB1这三条总线上。
其中寄存器其实可以理解为内存的地址,cpu通过地址访问对应的空间的内存数据,这个内存数据用来控制各个外设的开关。
stm32的函数一切库的封装始于寄存器的映射操作。
如果进行寄存器开发,就需要怼地址以及对寄存器进行字节赋值,不仅效率低而且容易出错。
因此我们开始使用库函数进行编程。
内核库文件分析
cor_cm3.h
这个头文件实现了:
1、内核结构体寄存器定义。
2、内核寄存器内存映射。
3、内存寄存器位定义。跟处理器相关的头文件stm32f10x.h实现的功能一样,一个是针对内核的寄存器,一个是针对内核之外,即处理器的寄存器。
misc.h
内核应用函数库头文件,对应stm32f10x_xxx.h。
misc.c
内核应用函数库文件,对应stm32f10x_xxx.c。在CM3这个内核里面还有一些功能组件,如NVIC、SCB、ITM、MPU、CoreDebug,CM3带有非常丰富的功能组件,但是芯片厂商在设计MCU的时候有一些并不是非要不可的,是可裁剪的,比如MPU、ITM等在STM32里面就没有。
其中NVIC在每一个CM3内核的单片机中都会有,但都会被裁剪,只能是CM3 NVIC的一个子集。在NVIC里面还有一个SysTick,是一个系统定时器,可以提供时基,一般为操作系统定时器所用。misc.h和mics.c这两个文件提供了操作这些组件的函数,并可以在CM3内核单片机直接移植。
处理器外设库文件分析
startup_stm32f10x_hd.s
这个是由汇编编写的启动文件,是STM32上电启动的第一个程序,启动文件主要实现了
● 初始化堆栈指针 SP;
● 设置 PC 指针=Reset_Handler ;
● 设置向量表的地址,并 初始化向量表,向量表里面放的是 STM32 所有中断函数的入口地址
● 调用库函数 SystemInit,把系统时钟配置成 72M,SystemInit 在库文件 stytem_stm32f10x.c 中定义;
● 跳转到标号_main,最终去到 C 的世界。
system_stm32f10x.c
这个文件的作用是里面实现了各种常用的系统时钟设置函数,有72M,56M,48, 36,24,8M,我们使用的是是把系统时钟设置成72M。
Stm32f10x.h
这个头文件非常重要,这个头文件实现了:
1、处理器外设寄存器的结构体定义。
2、处理器外设的内存映射。
3、处理器外设寄存器的位定义。
关于 1 和 2 我们在用寄存器点亮 LED 的时候有讲解。
其中 3:处理器外设寄存器的位定义,这个非常重要,具体是什么意思?
我们知道一个寄存器有很多个位,每个位写 1 或者写 0 的功能都是不一样的,处理器外设寄存器的位定义就是把外设的每个寄存器的每一个位写 1 的 16 进制数定义成一个宏,宏名即用该位的名称表示,如果我们操作寄存器要开启某一个功能的话,就不用自己亲自去算这个值是多少,可以直接到这个头文件里面找。
我们以片上外设 ADC 为例,假设我们要启动 ADC 开始转换,根据手册我们知道是要控制 ADC_CR2 寄存器的位 0:ADON,即往位 0 写 1,即:
ADC->CR2=0x00000001;
这是一般的操作方法。现在这个头文件里面有关于 ADON 位的位定义:
define ADC_CR2_ADON ((uint32_t)0x00000001)
有了这个位定义,我们刚刚的代码就变成了:
ADC->CR2=ADC_CR2_ADON
stm32f10x_xxx.h
外设 xxx 应用函数库头文件,这里面主要定义了实现外设某一功能的结构体,比如通用定时器有很多功能,有定时功能,有输出比较功能,有输入捕捉功能,而通用定时器有非常多的寄存器要实现某一个功能。
比如定时功能,我们根本不知道具体要操作哪些寄存器,这个头文件就为我们打包好了要实现某一个功能的寄存器,是以机构体的形式定义的,比如通用定时器要实现一个定时的功能,我们只需要初始化 TIM_TimeBaseInitTypeDef 这个结构体里面的成员即可,里面的成员就是定时所需要操作的寄存器。
有了这个头文件,我们就知道要实现某个功能需要操作哪些寄存器,然后再回手册中精度这些寄存器的说明即可。
stm32f10x_xxx.c
stm32f10x_xxx.c:外设 xxx 应用函数库,这里面写好了操作 xxx 外设的所有常用的函数,我们使用库编程的时候,使用的最多的就是这里的函数。
SystemInit
工程中新建main.c 。
在此文件中编写main函数后直接编译会报错:
Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o).
错误提示说SystemInit没有定义。从分析启动文件startup_stm32f10x_hd.s时我们知道,
;Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT main
;IMPORT SystemInit
;LDR R0, =SystemInit
BLX R0
LDR R0, =main
BX R0
ENDP
汇编中;分号是注释的意思
第五行第六行代码Reset_Handler调用了SystemInit该函数用来初始化系统时钟,而该函数是在库文件system_stm32f10x.c中实现的。我们重新写一个这样的函数也可以,把功能完整实现一遍,但是为了简单起见,我们在main文件里面定义一个SystemInit空函数,为的是骗过编译器,把这个错误去掉。
关于配置系统时钟之后会出文章RCC时钟树详细介绍,主要配置时钟控制寄存器(RCC_CR)和时钟配置寄存器(RCC_CFGR)这两个寄存器,但最好是直接使用CubeMX直接生成,因为它的配置过程有些冗长。
如果我们用的是库,那么有个库函数SystemInit,会帮我们把系统时钟设置成72M。
2、基本stm32外设配置流程
程序模板
第一步:申明结构体;
xxx_InitTypeDef xxx_InitStructure;
第二步:开启时钟;
(第一步和第二步顺序不能调换:标准c要求所有变量/结构体,都必须在代码段之前声明)
RCC_xPeriphClockCmd(RCC_AxBxPeriph_xxx, ENABLE)
2.5:引脚复用(如果有)并且开启复用的时钟
GPIO_PinAFConfig(GPIOx,GPIO_PinSourcex,GPIO_AF_x)
第三步:初始化结构体;
xxx_Init(xxx,&xxx_InitStructure)
若有设置中断
中断名在startup_stm32f40_41xx.s中定义。
第一步:使能外设某特定中断(定时器,串口,ADC)
xxx_ITConfig(xxx, xxx, ENABLE);
第二步:初始化 NVIC
NVIC_Init(&NVIC_InitStructure);
第三步:设置系统中断优先级分组(通常在主函数中配置)
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x);
中断服务函数(典型)
void xxx_IRQHandler(void)
{
if(xxx_GetITStatus(xxx)!=RESET)//判断某个线上的中断是否发生
{ …中断逻辑…
xxx_ClearITPendingBit(xxx); //清除 LINE 上的中断标志位
}
}
其它中断相关
xxx_GetITStatus(xxx)//获取中断状态,查看中断是否发生
//
xxx_ClearITPendingBit(xxx);//清除
else
xxx_ClearFlag(xxx);//清除
//前者会先判断这种中断是否使能,使能了才去判断中断标志位,
//而后者直接用来判断状态标志位。
END.定时器/串口/ADC使能
xxx_Cmd(xxx, ENABLE);
3、结构体变量配置具体形式
初始化结构体初始化 GPIO 的常用格式
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x | GPIO_Pin_x;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_xxx;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOx,&GPIO_InitStructure);
初始化结构体初始化 USART 的常用格式
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = bound;//一般设置为 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为 8 位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx |USART_Mode_Tx;//收发模式
USART_Init(USARTX, &USART_InitStructure); //初始化串口
初始化结构体初始化 NVIC 的常用格式
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = xxx_IRQn;//设置中断名
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//抢占优先级 3
NVIC_InitStructure.NVIC_IRQChannelSubPriority =3; //响应优先级 3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化 VIC 寄存器、
初始化结构体初始化外部中断的常用格式
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Linex;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_xxx;//上升,下降沿或任意电平
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure); //初始化外设 EXTI 寄存器
初始化结构体初始化定时器中断的常用格式
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = xxx;
TIM_TimeBaseStructure.TIM_Prescaler =xxx;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIVx;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_x;
TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);
初始化结构体初始化输出比较的常用格式
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWMx; //选择模式 PWM
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_xxx; //输出极性
TIM_OCxInit(TIMx, &TIM_OCInitStructure); //根据T指定的参数初始化外设
设置 ADC 的通用控制寄存器 CCR( common control register)
ADC_CommonInitTypeDef ADC_CommonInitStructure;
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;//独立模式
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_xCycles;//两个采样阶段之间的延迟周期数,5~20
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;//需保证 ADC1 的时钟频率不超过 36MHz。
ADC_CommonInit(&ADC_CommonInitStructure);//初始化
初始化结构体初始化ADC的常用格式
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Resolution = ADC_Resolution_xb;//6,8,10,12
ADC_InitStructure.ADC_ScanConvMode = DISABLE;//非扫描模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//关闭连续模式
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
//禁止触发检测,使用软件触发
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//右对齐
ADC_InitStructure.ADC_NbrOfConversion = 1;//1 个转换在规则序列中
ADC_Init(ADC1, &ADC_InitStructure);//ADC 初始化
三、GPIO配置
1、常用函数
GPIO_Init 初始化GPIO,设置GPIO的模式,速度,引脚数
GPIO_ReadInputDataBit 读取一位GPIO的输入数据
GPIO_ReadInputData 读取GPIOx的输入数据
GPIO_ReadOutputDataBit 读取一位GPIO的输出数据
GPIO_ReadOutputData 读取GPIOx的输出数据
GPIO_SetBits 使GPIO设置为高电平,可一起设置多,也可以设置一个
GPIO_ResetBits 使GPIO设置为高电平,课一起设置多,也可以设置一个
GPIO_WriteBit 设置GPIO的一个管脚
GPIO_Write 设置GPIOx全部管脚
GPIO_ToggleBits 翻转指定的GPIO口
GPIO_PinAFConfig 改变指定管脚的映射关系,即配置指定管脚的复用功能。
设计框图
例程代码
示例一:LED灯初始化GPIO口例程
void LED_GPIO_Config(void)
{
/定义一个GPIO_InitTypeDef类型的结构体/
GPIO_InitTypeDef GPIO_InitStructure;
/开启LED相关的GPIO外设时钟/
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB,ENABLE);
/选择要控制的GPIO引脚/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
/设置引脚模式为通用推挽输出/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/设置引脚速率为50MHz /
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/调用库函数,初始化GPIO/
GPIO_Init(GPIOC, &GPIO_InitStructure);
/选择要控制的GPIO引脚/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
/调用库函数,初始化GPIO/
GPIO_Init(GPIOB, &GPIO_InitStructure);
/选择要控制的GPIO引脚/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
/调用库函数,初始化GPIO/
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
参数:GPIO_InitStruct,GPIO的初始化相关结构体。该结构体里的成员变量决定了我们具体的初始化参数。以下进行说明:
GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。
GPIO_Mode:指定GPIO的模式,
输入模式:
● 输入浮空: GPIO_Mode_IN_FLOATING
● 输入上拉: GPIO_Mode_IPU
● 输入下拉 :GPIO_Mode_IPD
● 模拟输入 :GPIO_Mode_AIN
输出模式
● 开漏输出 GPIO_Mode_Out_OD
● 推挽输出 GPIO_Mode_Out_PP
● 复用功能推挽 GPIO_Mode_AF_PP
● 复用功能开漏 GPIO_Mode_AF_OD
GPIO_Speed:指定IO最快翻转速度,也就是当使用IO产生频率(如PWM)的最大速度:
● GPIO_Speed_10MHz,
● GPIO_Speed_2MHz,
● GPIO_Speed_50MHz等
示例二:把GPIO配置成输入
常规方式按键使用中断触发,本案例很少被使用在按键中。
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//结构体定义
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
//使能 PORTA,PORTC 时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
//PA15
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
//设置成上拉输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
//初始化 GPIOA15
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
//PC5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
//设置成上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure);
//初始化 GPIOC5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
//PA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
//PA0 设置成输入,默认下拉
GPIO_Init(GPIOA, &GPIO_InitStructure);
//初始化 GPIOA.0
}
示例三:配置复用功能 PA9 PA10 配置成串口1的收发接口
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1时钟
//串口1对应引脚复用映射
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);//GPIOA9复用为USART1
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//GPIOA10复用为USART1
//USART1端口配置
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9与GPIOA10
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; //速度50MHz
GPIO_InitStructure.GPIO_OType= GPIO_OType_PP; //推挽复用输出
GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA9,PA10
四、外部中断
1、常用函数
void EXTI_DeInit(void); 重设为缺省值
void EXTI_Init(EXTI_InitTypeDef EXTI_InitStruct); 根据EXTI_InitStruct结构体的配置进行初始化
void EXTI_StructInit(EXTI_InitTypeDef EXTI_InitStruct);把结构体变量的每一个变量按照缺省值填入。
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);产生一个中断
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);获取指定的EXTI线路挂起的标志位
void EXTI_ClearFlag(uint32_t EXTI_Line);清楚EXTI的挂起标志位
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);检查指定的EXTI线路触发请求发送与否
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);清楚EXTI线路挂起位
voidNVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)中断优先级分组
分组号 4 bit 分配情况 说明
第0组 0 : 4 无抢占式优先级,16 个子优先级
第1组 1 : 3 2 个抢占式优先级,8 个子优先级
第2组 2 : 2 4 个抢占式优先级,4 个子优先级
第3组 3 : 1 8 个抢占式优先级,2 个子优先级
第4组 4 : 0 16 个抢占式优先级,无子优先级
如果用户没有设置优先级分组,即用户没有调用NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup),则优先级分组默认设置为分组 0,即无抢占式优先级、16个子优先级。
NVIC_Init(&NVIC_InitStruct); 根据NVIC_InitStruct结构体的配置进行初始化
设计框图
例程代码
相关配置代码的介绍
//0、初始化GPIO
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = Z_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(Z_GPIO_PORT, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
//1.配置中断线
EXTI_InitTypeDef EXTI_InitStruct;//创建结构体来初始化中断线
EXTI_ClearITPendingBit(EXTI_Line9); //清除中断标志位
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);
EXTI_InitStructure.EXTI_Line = EXTI_Line13;//选择EXTI的信号源
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;/ EXTI为中断模式 /
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;/ 下降沿中断 /
EXTI_InitStructure.EXTI_LineCmd = ENABLE;/ 使能中断 /
EXTI_Init(&EXTI_InitStructure);
//2.配置NVIC中断优先级
NVIC_InitTypeDef NVIC_InitStructure;//创建结构体来初始化中断优先级
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//配置分组号
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
//使能按键所在的外部中断通道
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0x02;//设置抢占优先级
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0x01;//设置子优先级
NVIC_Init(&NVIC_InitStruct);
//3.实现中断服务函数(注意配置完之后清除函数的挂起)
void EXTI0_IRQHandler(void)
{
delay_ms(10); //消抖?
if (WK_UP == 1)
{
LED0 = 1;//led函数宏
LED1 = 1;
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除 EXTI0 线路挂起,清除位
}
NVIC_InitTypeDef 结构体中间有四个成员变量,这四个成员变量的作用是:
● NVIC_IRQChannel:定义初始化的是哪个中断,这个我们可以在 stm32f10x.h 中找到每个中断对应的名字。
● NVIC_IRQChannelPreemptionPriority:定义这个中断的抢占优先级别。
● NVIC_IRQChannelSubPriority:定义这个中断的子优先级别。
● NVIC_IRQChannelCmd:使能or失能NVIC
EXTI的配置,EXTI_Trigger这里支持三种模式;
● EXTI_Trigger_Rising 上升沿触发;
● EXTI_Trigger_Falling 下降沿触发;
● EXTI_Trigger_Rising_Falling 上升沿和下降沿都可以触发;
中断服务函数在stm32f10x_it.c中编写,在汇编文件中查询
完整代码
void CountSensor_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource14);
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line14;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStructure);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStructure);
}
void EXTI15_10_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line14) == SET)
{
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) == 0)
{
CountSensor_Count ++;
}
EXTI_ClearITPendingBit(EXTI_Line14);
}
}
五、定时器
1、常用函数
void TIM_DeInit
void TIM_TimeBaseInit
void TIM_OC1Init
void TIM_OC2Init
void TIM_OC3Init
void TIM_OC4Init
void TIM_ICInit
void TIM_PWMIConfig
void TIM_BDTRConfig
void TIM_TimeBaseStructInit
void TIM_OCStructInit
void TIM_ICStructInit
void TIM_BDTRStructInit
void TIM_Cmd
void TIM_CtrlPWMOutputs
void TIM_ITConfig
void TIM_GenerateEvent
void TIM_DMAConfig
void TIM_DMACmd
void TIM_InternalClockConfig
void TIM_ITRxExternalClockConfig
void TIM_TIxExternalClockConfig
void TIM_ETRClockMode1Config
void TIM_ETRClockMode2Config
void TIM_ETRConfig
void TIM_PrescalerConfig
void TIM_CounterModeConfig
void TIM_SelectInputTrigger
void TIM_EncoderInterfaceConfig
void TIM_ForcedOC1Config
void TIM_ForcedOC2Config
void TIM_ForcedOC3Config
void TIM_ForcedOC4Config
void TIM_ARRPreloadConfig
void TIM_SelectCOM
void TIM_SelectCCDMA
void TIM_CCPreloadControl
void TIM_OC1PreloadConfig
void TIM_OC2PreloadConfig
void TIM_OC3PreloadConfig
void TIM_OC4PreloadConfig
void TIM_OC1FastConfig
void TIM_OC2FastConfig
void TIM_OC3FastConfig
void TIM_OC4FastConfig
void TIM_ClearOC1Ref
void TIM_ClearOC2Ref
void TIM_ClearOC3Ref
void TIM_ClearOC4Ref
void TIM_OC1PolarityConfig
void TIM_OC1NPolarityConfig
void TIM_OC2PolarityConfig
void TIM_OC2NPolarityConfig
void TIM_OC3PolarityConfig
void TIM_OC3NPolarityConfig
void TIM_OC4PolarityConfig(TIM_TypeDef TIMx, uint16_t TIM_OCPolarity);
void TIM_CCxCmd(TIM_TypeDef TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
void TIM_CCxNCmd(TIM_TypeDef TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);
void TIM_SelectOCxM(TIM_TypeDef TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);
void TIM_UpdateDisableConfig(TIM_TypeDef TIMx, FunctionalState NewState);
void TIM_UpdateRequestConfig(TIM_TypeDef TIMx, uint16_t TIM_UpdateSource);
void TIM_SelectHallSensor(TIM_TypeDef TIMx, FunctionalState NewState);
void TIM_SelectOnePulseMode(TIM_TypeDef TIMx, uint16_t TIM_OPMode);
void TIM_SelectOutputTrigger(TIM_TypeDef TIMx, uint16_t TIM_TRGOSource);
void TIM_SelectSlaveMode(TIM_TypeDef TIMx, uint16_t TIM_SlaveMode);
void TIM_SelectMasterSlaveMode(TIM_TypeDef TIMx, uint16_t TIM_MasterSlaveMode);
void TIM_SetCounter(TIM_TypeDef TIMx, uint16_t Counter);
void TIM_SetAutoreload(TIM_TypeDef TIMx, uint16_t Autoreload);
void TIM_SetCompare1(TIM_TypeDef TIMx, uint16_t Compare1);
void TIM_SetCompare2(TIM_TypeDef TIMx, uint16_t Compare2);
void TIM_SetCompare3(TIM_TypeDef TIMx, uint16_t Compare3);
void TIM_SetCompare4(TIM_TypeDef TIMx, uint16_t Compare4);
void TIM_SetIC1Prescaler(TIM_TypeDef TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC2Prescaler(TIM_TypeDef TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC3Prescaler(TIM_TypeDef TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC4Prescaler(TIM_TypeDef TIMx, uint16_t TIM_ICPSC);
void TIM_SetClockDivision(TIM_TypeDef TIMx, uint16_t TIM_CKD);
uint16_t TIM_GetCapture1(TIM_TypeDef TIMx);
uint16_t TIM_GetCapture2(TIM_TypeDef TIMx);
uint16_t TIM_GetCapture3(TIM_TypeDef TIMx);
uint16_t TIM_GetCapture4(TIM_TypeDef TIMx);
uint16_t TIM_GetCounter(TIM_TypeDef TIMx);
uint16_t TIM_GetPrescaler(TIM_TypeDef TIMx);
FlagStatus TIM_GetFlagStatus(TIM_TypeDef TIMx, uint16_t TIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef TIMx, uint16_t TIM_FLAG);
ITStatus TIM_GetITStatus(TIM_TypeDef TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef TIMx, uint16_t TIM_IT);
设计框图
类型 编号 总线 功能
高级定时器 TIM1、TIM8 APB2 拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能
通用定时器 TIM2、TIM3、TIM4、TIM5 APB1 拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能
基本定时器 TIM6、TIM7 APB1 拥有定时中断、主模式触发DAC的功能
例程代码
定时器中断实现步骤
① 能定时器时钟。
RCC_APB1PeriphClockCmd();
② 初始化定时器,配置ARR,PSC。
TIM_TimeBaseInit();
③开启定时器中断,配置NVIC。
void TIM_ITConfig();
NVIC_Init();
④ 使能定时器。
TIM_Cmd();
⑥ 编写中断服务函数。
TIMx_IRQHandler();
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
TIM_InternalClockConfig(TIM3);
//定时器TIM3初始化
TIM_TimeBaseInitStructure.TIM_Period = 10000 - 1; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1; //设置用来作为TIMx时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位
TIM_ClearFlag(TIM3, TIM_FLAG_Update);//清除标志位
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
//中断优先级NVIC设置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//选择分组
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
TIM_Cmd(TIM3, ENABLE); //使能TIMx
}
//定时器3中断服务程序
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
LED1=!LED1;
}
}
Valuable forum posts. Appreciate it!
buy pre written essay pay for essay papers
Incredible all kinds of great tips.
essay writer cheap someone do my essay for me uk essay writer
Superb forum posts, Appreciate it.
myself as a writer essay websites that write your essays for you craigslist essay writer
You’ve made the point!
online casino signup bonus no deposit riversweeps online casino free bonus riversweeps 777 online casino app real money
448166 471593I usually cant locate it in me to care enough to leaves a comment for articles on the internet but this was truly pretty very good, thanks and maintain it up, Ill check back once more 781254
924670 497508Im having a little issue I cant subscribe your feed, Im using google reader fyi. 3216
531201 229390Hey, I think your site might be having browser compatibility issues. When I look at your website in Opera, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, awesome blog! 675201
33707 406691A thoughtful insight and suggestions I will use on my internet site. Youve certainly spent some time on this. Congratulations! 236863
867501 35190I gotta favorite this website it seems extremely beneficial . 102525
495274 854050This internet web site is often a walk-through for all with the knowledge you wanted concerning this and didnt know who should. Glimpse here, and youll definitely discover it. 56818
845957 943711I like this internet site so a lot, saved to favorites . 201615
790946 940146Some truly great content material on this web internet site , appreciate it for contribution. 713417
350344 62688quite good put up, i undoubtedly love this web site, keep on it 988657
311046 692422As being a Newbie, Were permanently exploring online for articles which can be of support to me. Several thanks 513217
757543 200982Id have to check with you here. Which is not something I generally do! I enjoy reading a post that will make men and women believe. Also, thanks for allowing me to comment! 451312
661026 557044Good to be visiting your blog once more, it continues to be months for me. Nicely this post that ive been waited for so lengthy. I want this write-up to total my assignment in the university, and it has very same topic together together with your post. Thanks, terrific share. 924813
271427 805927Enjoyed reading this, extremely very good stuff, appreciate it. 639732
778244 778860Quite educating story, saved your website for hopes to read a lot more! 141672
760247 600349Ive read several very good stuff here. Undoubtedly value bookmarking for revisiting. I surprise how considerably effort you put to create 1 of these outstanding informative web site. 126917
782680 394638Youll notice several contrasting points from New york Weight reduction eating plan and every 1 1 could be valuable. The very first point will probably be authentic relinquishing on this excessive. shed weight 744794
137784 224963Located your weblog and decided to have a study on it, not what I normally do, but this blog is amazing. Awesome to see a web site thats not spammed, and really makes some sense. Anyway, excellent write up. 609502
773414 193796I likewise conceive thus, perfectly written post! . 631325
169952 32356Woh I like your articles , saved to fav! . 285077
161658 863106Highest quality fella toasts, or toasts. will most definitely be given birth to product or service ? from the party therefore supposed to become surprising, humorous coupled with enlightening likewise. best man speaches 117090
You actually explained this effectively!
application essay writing service which essay writing service is the best best college paper writing service
179616 100777In case you tow a definite caravan nor van movie trailer your entire family pretty soon get exposed towards the down sides towards preventing greatest securely region. awnings 972049
999370 360134Following study several of the blog articles for your internet website now, and i also genuinely such as your strategy for blogging. I bookmarked it to my bookmark internet web site list and are checking back soon. Pls take a appear at my internet page in addition and tell me what you believe. 415853
574616 12313Youre so cool! I dont suppose Ive read anything in this way before. So nice to uncover somebody with some original concepts on this subject. realy appreciate starting this up. this excellent web site is something that is necessary more than the internet, a person if we do originality. valuable work for bringing something new towards the web! 259630
710573 11785Some times its a pain inside the ass to read what individuals wrote but this web website is really user friendly ! . 351265
785601 730864What a exceptional viewpoint, nonetheless is just not produce every sence by any indicates discussing this mather. Just about any technique thanks and also i had try and discuss your post directly into delicius but it surely appears to be an issue within your blogging is it possible you must recheck this. thank you just as before. 62062
995982 744855I conceive this web website holds some real superb details for everyone : D. 369536
647772 670074Appreciate it for helping out, superb information. 726139
549342 206551You produced some decent points there. I looked on the net for any difficulty and located most individuals goes along with together along with your site. 337654
149022 260046Hello there! I could have sworn Ive been to this blog before but following checking by means of some with the post I realized it is new to me. Anyhow, Im definitely glad I identified it and Ill be bookmarking and checking back frequently! 821147
628352 526290This web website is typically a walk-through its the data you wished concerning this and didnt know who ought to. Glimpse here, and youll definitely discover it. 32640
620146 448351Its difficult to acquire knowledgeable individuals about this subject, and you sound like what happens you are speaking about! Thanks 984305
513326 613970Some truly nice and utilitarian information on this internet web site , besides I believe the layout holds amazing features. 25296
881793 377953hello I was very impressed with the setup you used with this weblog. I use blogs my self so congrats. definatly adding to favorites. 253502
616542 536885I gotta favorite this internet internet site it seems handy . 882167
49316 252644I believe this is among the most vital information for me. And im glad reading your article. But wanna remark on few common points, The site style is perfect, the articles is truly great : D. Great job, cheers 91978
283091 916965Nice website, nice and simple on the eyes and fantastic content too. Do you need a lot of drafts to make a post? 183581
Wow many of very good advice.
best essay writing service student room what is essay writing top college paper writing service
Buy Affordable Psychedelics Drugs online U.S legally with the possession for personal use of small amounts of all our psychedelic drugs for sale online. Including cocaine,Ecstasy Pills, Ketamine, Spore syringes, DMT, MDMA, Magic Mushroom, Research Chemicals, Ayahuasca and other. Oregon is one of the state that have implemented this policy. However, before purchasing any our drugs online make sure to have a prescription.
When you get a prescription from a doctor, you’ll likely know what the prescript drug is all about and how you can manage your dose without taking an overdose. Physicians also might be more likely to prescribe off-label medications for patients facing life-threatening or terminal medical conditions.
how to take dmt 2023
what is dmt for sale
where can I buy dmt in usa
best cocaine for sale
buy xanax online with bitcoin
order cheap spore syringes for sale
whats psychedelics and how it’s use
how to dose dmt
where to buy heroine with bitcoin
where to buy mushrooms for sale Canada
mushroom ediblest buy
magic muhsroom chocolatet for sale
cheapest mushrooms for sale online
best place to order MDMA pills
how to buy drugs online bitcoin
Order cheap lsd online near me uk
where to buy ayahuasca online
best place to order ibogaine for sale
where to order mdma for sale online with bitcoin
purchase cheap kratom online usa
mescaline online for sale usa
cheap buy mushroom online
buy psychedelics online usa
4 ACO DMT For Sale cheap online
order Buy 5 MEO DMT Online Australia
buy dmt online near me
NN DMT Erowid For Sale cheap with bitcoin
order dmt vape pens for sale with bitcoin
where to buy Changa DMT drug safely
buy lsd gel tabs free shipping
liquid lsd for sale near me mail delivery
can I buy lsd online Canada
where can I buy psychedelics online usa
best place to Buy dmt online us
best price for 5 meo dmt for sale
affordable 4-aco-dmt for sale usa
where to order dmt for sale in uk
how to get dmt online 2023
secret how to get dmt free shipping
where to buy dmt with bitcoin safely
buy cheap dmt, ayahuasca online
Dear immortals, I need some wow gold inspiration to create.
Стабилизатор напряжения – это защита энергозависимых газовых котлов, а также бытовой и офисной техники (телевизоров, компьютеров, мини- АТС), суммарная электрическая мощность которой не превышает 500 ВА (и т. д.). Обращаем ваше внимание: при подключении насосов, компрессоров, и разного электроинструмента с прямым пуском стабилизатор напряжения должен иметь минимум запас, превышающий мощность электродвигателя в 1,5-3 раза.
стабилизаторы напряжения http://stabrov.ru.
Podczas robienia zdjęć telefonem komórkowym lub tabletem należy włączyć funkcję usługi pozycjonowania GPS w urządzeniu, w przeciwnym razie nie można zlokalizować telefonu komórkowego. https://www.xtmove.com/pl/how-to-track-location-through-mobile-phone-photos/
Desde que haja uma rede, a gravação remota em tempo real pode ser realizada sem instalação de hardware especial.
porno tthighereduhryyy.vPMqt2kCQrj
Thanks a lot for sharing this with all of us you really realize what you’re talking
approximately! Bookmarked. Kindly also seek advice from my web
site =). We could have a hyperlink alternate arrangement among us
Helpful information. Lucky me I found your site by chance, and I am surprised why this
twist of fate did not took place earlier! I bookmarked it.
Wow, awesome blog layout! How lengthy have you ever been blogging for?
you make blogging glance easy. The overall
look of your web site is excellent, as neatly as the content material!
You can see similar here e-commerce
Today, I went to the beach with my children. I found a sea shell and gave it to my 4 year
old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear and
screamed. There was a hermit crab inside and it pinched her ear.
She never wants to go back! LoL I know this is entirely off
topic but I had to tell someone!
In fact when someone doesn’t know afterward its up to other viewers that they will assist, so here it occurs.
I wanted to thank you for this very good read!! I definitely loved
every bit of it. I have got you saved as a favorite to check out new stuff you post…
Good day! Do you know if they make any plugins to safeguard against hackers?
I’m kinda paranoid about losing everything I’ve worked hard on. Any suggestions?
Wow, incredible weblog format! How lengthy
have you been running a blog for? you made running a
blog look easy. The total look of your website is fantastic, let alone
the content material! You can see similar here sklep internetowy
Циклёвка паркета: особенности и этапы услуги
Циклёвка паркета — это процесс восстановления внешнего вида паркетного пола путём удаления верхнего повреждённого слоя и возвращения ему первоначального вида. Услуга включает в себя несколько этапов:
Подготовка: перед началом работы необходимо защитить мебель и другие предметы от пыли и грязи, а также удалить плинтусы.
Шлифовка: с помощью шлифовальной машины удаляется старый лак и верхний повреждённый слой древесины.
Шпатлёвка: после шлифовки поверхность паркета шпатлюется для заполнения трещин и выравнивания поверхности.
Грунтовка: перед нанесением лака паркет грунтуется для улучшения адгезии и защиты от плесени и грибка.
Нанесение лака: лак наносится в несколько слоёв с промежуточной шлифовкой между ними.
Полировка: после нанесения последнего слоя лака паркет полируется для придания поверхности блеска и гладкости.
Циклёвка паркета позволяет обновить внешний вид пола, восстановить его структуру и продлить срок службы.
Сайт: ykladka-parketa.ru Циклёвка паркета
Лендинг-пейдж — это одностраничный сайт, предназначенный для рекламы и продажи товаров или услуг, а также для сбора контактных данных потенциальных клиентов. Вот несколько причин, почему лендинг-пейдж важен для бизнеса:
Увеличение узнаваемости компании. Лендинг-пейдж позволяет представить компанию и её продукты или услуги в выгодном свете, что способствует росту узнаваемости бренда.
Повышение продаж. Заказать лендинг можно здесь – 1landingpage.ru Одностраничные сайты позволяют сосредоточиться на конкретных предложениях и акциях, что повышает вероятность совершения покупки.
Оптимизация SEO-показателей. Лендинг-пейдж создаются с учётом ключевых слов и фраз, что улучшает позиции сайта в результатах поиска и привлекает больше целевых посетителей.
Привлечение новой аудитории. Одностраничные сайты могут использоваться для продвижения новых продуктов или услуг, а также для привлечения внимания к определённым кампаниям или акциям.
Расширение клиентской базы. Лендинг-пейдж собирают контактные данные потенциальных клиентов, что позволяет компании поддерживать связь с ними и предлагать дополнительные услуги или товары.
Простота генерации лидов. Лендинг-пейдж предоставляют краткую и понятную информацию о продуктах или услугах, что облегчает процесс принятия решения для потенциальных клиентов.
Сбор персональных данных. Лендинг-пейдж позволяют собирать информацию о потенциальных клиентах, такую как email-адрес, имя и контактные данные, что помогает компании лучше понимать свою аудиторию и предоставлять более персонализированные услуги.
Улучшение поискового трафика. Лендинг-пейдж создаются с учётом определённых поисковых запросов, что позволяет привлекать больше целевых посетителей на сайт.
Эффективное продвижение новой продукции. Лендинг-пейдж можно использовать для продвижения новых товаров или услуг, что позволяет привлечь внимание потенциальных клиентов и стимулировать их к покупке.
Лёгкий процесс принятия решений. Лендинг-пейдж содержат только самую необходимую информацию, что упрощает процесс принятия решения для потенциальных клиентов.
В целом, лендинг-пейдж являются мощным инструментом для продвижения бизнеса, увеличения продаж и привлечения новых клиентов.
Заказать лендинг
Hi! I know this is somewhat off topic but I was wondering if you knew where I could find
a captcha plugin for my comment form? I’m using the same blog platform as
yours and I’m having difficulty finding one?
Thanks a lot!
Amazing things here. I am very happy to peer your post.
Thanks a lot and I am taking a look ahead to contact you.
Will you kindly drop me a mail?
batmanapollo.ru
Ad gloriam — Во славу.
Contra contrariis curantur — Противное излечивается противным.
Abiens, abi! — Уходя, уходи!
Ad usum internum — Для внутреннего употребления.
Ad discendum, non ad docendum — Для изучения, но не для поучения.
Benevolentiae captande causa — Для снискания благоволения.
Abiens, abi! — Уходя, уходи!
Everything has a second side (У всего есть вторая сторона)
Ad discendum, non ad docendum — Для изучения, но не для поучения.
Министерство неджентльменских дел
Министерство неджентльменских дел
Министерство неджентльменских дел
Министерство неджентльменских дел
Усик – Фьюри: смотреть онлайн-трансляцию церемонии
Усик — Фьюри: где смотреть бой в Украине
Oleksandr Usyk vs Tyson Fury
Усик – Фьюри: смотреть онлайн-трансляцию церемонии
Фуриоса: Хроники Безумного Макса
Психолог
Психолог
Психотерапевт
Психоаналитик
Психотерапевт
Thanks in favor of sharing such a pleasant thought,
post is good, thats why i have read it entirely
Будущее разума и новые книги по психиатрии.
Divide et impera
Dictum – factum
100 лет тому вперед смотреть онлайн бесплатно в хорошем. 100 лет тому вперед смотреть фильм онлайн.
100 лет тому вперед смотреть онлайн. 100 лет тому вперед фильм 2024 смотреть.
Уэнздей 2 сезон кино
Главвный герой кино
Hi there, I read your new stuff regularly. Your writing style is witty, keep it up!
Фоллаут 1 сезон фильм
Психолог 2024
Претенденты смотреть Претенденты фильм, 2024, смотреть онлайн
Hello, I check your blog on a regular basis. Your humoristic style is witty, keep up the
good work!
I am not sure where you’re getting your information, but great topic.
I needs to spend some time learning more or understanding more.
Thanks for wonderful info I was looking for this info for
my mission.
Hello I am so thrilled I found your site, I really found you by error,
while I was researching on Bing for something else, Anyhow I
am here now and would just like to say many thanks for a
marvelous post and a all round entertaining blog (I also love the theme/design), I don’t
have time to look over it all at the minute but
I have bookmarked it and also added in your RSS feeds, so when I
have time I will be back to read a great deal more,
Please do keep up the superb jo.
It’s difficult to find experienced people on this subject, but you sound like you
know what you’re talking about! Thanks
Quality content is the main to be a focus for the people to pay a visit the website, that’s what this site is providing.
My programmer is trying to persuade me to move to .net from PHP.
I have always disliked the idea because of the costs. But he’s tryiong none the less.
I’ve been using WordPress on numerous websites for about a year
and am worried about switching to another platform. I have heard excellent things about blogengine.net.
Is there a way I can transfer all my wordpress posts into it?
Any help would be greatly appreciated!
you’re in reality a excellent webmaster. The site loading
speed is amazing. It sort of feels that you’re doing any distinctive trick.
Furthermore, The contents are masterwork. you have performed a
excellent activity on this topic!
What i don’t realize is if truth be told how you are no longer really a lot more well-appreciated than you might be right now.
You’re very intelligent. You recognize thus considerably with regards to this
subject, made me for my part consider it from so many varied angles.
Its like men and women aren’t fascinated unless it is something to
do with Lady gaga! Your own stuffs excellent.
At all times deal with it up!
I really like your blog.. very nice colors & theme. Did you design this website yourself or
did you hire someone to do it for you? Plz reply as I’m looking to design my own blog and would like to know where u got
this from. kudos
Hey there I am so glad I found your blog page, I really found you by mistake, while I
was researching on Bing for something else,
Regardless I am here now and would just like to say thanks a lot for a fantastic post and a all round exciting blog (I also love the theme/design), I don’t have time
to look over it all at the minute but I have bookmarked it and also added
in your RSS feeds, so when I have time I will
be back to read a lot more, Please do keep up the excellent work.
Oh my goodness! Awesome article dude! Many thanks, However I am experiencing problems with your RSS.
I don’t know the reason why I can’t subscribe to it.
Is there anyone else getting identical RSS problems? Anyone that knows the answer can you kindly respond?
Thanks!!
My page WD808 Slot Gacor
Keep on writing, great job!
Hey! I know this is kinda off topic nevertheless I’d figured I’d ask.
Would you be interested in exchanging links or maybe guest
writing a blog article or vice-versa? My site covers a lot of
the same subjects as yours and I believe we could greatly benefit from each other.
If you’re interested feel free to shoot me an e-mail. I look forward to hearing
from you! Fantastic blog by the way!
Great post. I used to be checking continuously this weblog and I’m impressed!
Very helpful info specially the final section 🙂 I care for such info much.
I was looking for this particular information for a long time.
Thanks and good luck.
Hey! Someone in my Facebook group shared this website with us so I came to check
it out. I’m definitely loving the information. I’m book-marking and will be tweeting this to my followers!
Great blog and amazing design.
Hello are using WordPress for your blog platform? I’m new to the blog world but I’m trying to get started and
create my own. Do you require any html coding knowledge to make your own blog?
Any help would be really appreciated!
When I originally left a comment I seem to have clicked on the -Notify me
when new comments are added- checkbox and from now on whenever a comment is added I
receive 4 emails with the exact same comment. Is there
a means you can remove me from that service? Thanks
a lot!
Здесь вы найдете разнообразный видео контент отель ялта интурист официальный
Fantastic beat ! I would like to apprentice even as you amend your website, how could i subscribe for a weblog
web site? The account helped me a appropriate deal.
I had been a little bit acquainted of this your broadcast offered vivid clear idea
I’m not sure why but this website is loading extremely slow for
me. Is anyone else having this issue or is it a issue on my end?
I’ll check back later and see if the problem still exists.
We are a group of volunteers and opening a new scheme in our community.
Your website provided us with valuable information to work on. You have done
a formidable job and our entire community will be grateful to you.
I’m curious to find out what blog system you are working with?
I’m having some small security issues with my latest blog and I would like to find something
more risk-free. Do you have any solutions?
What’s up everyone, it’s my first go to see at
this web page, and paragraph is genuinely fruitful for me, keep up posting these articles or reviews.
Изображения с добрыми утренними пожеланиями https://utra-dobrogo.ru/ – это простой,
но весьма действенный способ поднять настроение себе и родным с самого утра.
Яркие и позитивные изображения с пожеланиями хорошего дня помогают начать день с улыбкой и
положительными мыслями. Они могут вмещать прекрасные виды, забавные
картинки, вдохновляющие фразы или прелестных зверюшек,
которые вносят в утро больше радости.
Такие картинки легко можно
отправить друзьям и близким через мобильные приложения или соцсети, делая их
день лучше. Начав утро с приятного пожелания,
весь день может пройти более позитивно и продуктивно.
Oh my goodness! Incredible article dude! Thank you
so much, However I am encountering issues
with your RSS. I don’t understand why I can’t join it.
Is there anyone else having identical RSS issues? Anybody who knows the
solution can you kindly respond? Thanx!!
Everything is very open with a precise explanation of
the issues. It was definitely informative. Your
site is extremely helpful. Thanks for sharing!
Hello i am kavin, its my first time to commenting anywhere,
when i read this post i thought i could also create comment
due to this good paragraph.
I am regular visitor, how are you everybody? This paragraph posted at this
site is genuinely nice.
Hmm is anyone else encountering problems with the pictures on this blog loading?
I’m trying to figure out if its a problem on my end or if it’s the
blog. Any responses would be greatly appreciated.
When someone writes an piece of writing he/she maintains the
thought of a user in his/her mind that how a user can know
it. So that’s why this post is amazing. Thanks!
Also visit my blog; 乱伦色情
Way cool! Some very valid points! I appreciate you writing this article and the rest of the site is very good.
Admiring the hard work you put into your blog and in depth information you offer.
It’s nice to come across a blog every once in a while that isn’t the same old rehashed information. Great read!
I’ve saved your site and I’m adding your RSS feeds to my Google account.
Hey I know this is off topic but I was wondering if you knew of any widgets I could add
to my blog that automatically tweet my newest twitter updates.
I’ve been looking for a plug-in like this for quite some time and was hoping
maybe you would have some experience with something like
this. Please let me know if you run into anything. I truly enjoy reading
your blog and I look forward to your new
updates.
Definitely believe that which you stated. Your favorite reason appeared to be on the internet the simplest thing to understand of.
I say to you, I definitely get irked while other folks consider concerns
that they just don’t realize about. You controlled to hit the nail upon the top as
smartly as defined out the whole thing without having side effect ,
other people could take a signal. Will likely be again to get more.
Thank you
Купить прокси. Персональные анонимные приватные proxy
Hi Dear, are you actually visiting this web page regularly, if so then you
will absolutely obtain good knowledge.
Pretty nice post. I simply stumbled upon your weblog and wished to
say that I have truly enjoyed browsing your weblog posts. In any case I will be subscribing on your
feed and I hope you write once more very soon!
Hi, i feel that i noticed you visited my site so i got here to go back the prefer?.I’m attempting to in finding issues to enhance my website!I suppose its adequate to
use some of your concepts!!
I just could not leave your website prior to suggesting that I extremely enjoyed
the usual info a person supply on your visitors? Is gonna
be again regularly in order to check up on new posts
Hello this is kind of of off topic but I was wanting to know if blogs use WYSIWYG
editors or if you have to manually code with HTML.
I’m starting a blog soon but have no coding expertise so I
wanted to get advice from someone with experience.
Any help would be greatly appreciated!
We’re a group of volunteers and opening a new
scheme in our community. Your website offered us with valuable information to work on. You have done a formidable job and our whole community will be thankful to you.
You are so interesting! I do not think I have read a single thing like this before.
So good to discover someone with original thoughts on this issue.
Seriously.. thanks for starting this up. This site is something that’s needed on the web,
someone with a bit of originality!
I pay a visit every day a few websites and blogs to read posts,
however this web site offers quality based content.
I like the helpful information you provide in your articles.
I’ll bookmark your blog and check again here regularly.
I’m quite certain I will learn a lot of new stuff right here!
Best of luck for the next!
I do not know if it’s just me or if perhaps everybody else experiencing problems with your site.
It seems like some of the written text within your
posts are running off the screen. Can someone else please comment and
let me know if this is happening to them too? This may be a
problem with my web browser because I’ve had this happen before.
Many thanks
Heya superb blog! Does running a blog like this require a large amount of work?
I’ve very little knowledge of computer programming but
I had been hoping to start my own blog soon. Anyway, should you have any ideas or techniques for new blog owners please
share. I understand this is off topic nevertheless I
simply had to ask. Thanks a lot!
Great blog! Is your theme custom made or did
you download it from somewhere? A theme like yours with a
few simple adjustements would really make my
blog stand out. Please let me know where you got
your theme. Appreciate it
Today, I went to the beach with my kids. I found a sea shell and gave
it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to
her ear and screamed. There was a hermit crab inside and it pinched her ear.
She never wants to go back! LoL I know this is completely off topic but I had to tell someone!
Hey there! This is my first visit to your blog!
We are a team of volunteers and starting a new initiative in a community in the same niche.
Your blog provided us useful information to work on. You have done a wonderful job!
obviously like your web-site however you have to test the
spelling on several of your posts. Several of them are
rife with spelling issues and I find it very bothersome to tell the
reality on the other hand I will certainly
come back again.
Aw, this was an exceptionally good post. Spending some time and actual effort to create
a top notch article… but what can I say… I hesitate
a lot and don’t manage to get anything done.
Excellent beat ! I wish to apprentice even as
you amend your site, how could i subscribe for a blog website?
The account helped me a acceptable deal. I have been a little bit
acquainted of this your broadcast offered shiny transparent
concept
It’s the best time to make some plans for the future and it’s time to be happy.
I have read this post and if I could I desire to
suggest you few interesting things or tips. Maybe you could write next articles referring to this article.
I want to read more things about it!
Hey there, You have done an excellent job. I’ll definitely digg it and personally suggest to
my friends. I’m sure they will be benefited from this website.
It’s really very difficult in this busy life to listen news on Television, thus I only use web for that reason, and obtain the hottest information.
It’s truly very complicated in this full of activity life to listen news
on Television, thus I only use internet for that purpose, and obtain the most recent information.
Howdy! Quick question that’s entirely off topic.
Do you know how to make your site mobile friendly?
My web site looks weird when viewing from my iphone 4. I’m trying
to find a theme or plugin that might be able to
fix this issue. If you have any suggestions, please share.
With thanks!
It’s a shame you don’t have a donate button! I’d without a doubt donate to this excellent blog!
I guess for now i’ll settle for book-marking and adding your RSS feed to my Google account.
I look forward to fresh updates and will share this website with my Facebook group.
Chat soon!
I was suggested this web site by my cousin. I am not sure whether this post is written by him as nobody else
know such detailed about my trouble. You’re wonderful!
Thanks!
Wow! At last I got a website from where I can actually get useful data regarding
my study and knowledge.
I have read so many posts concerning the blogger lovers but this article is actually a
fastidious paragraph, keep it up.
Please let me know if you’re looking for a writer for your blog.
You have some really good posts and I think I would be a good asset.
If you ever want to take some of the load off, I’d love to write some articles for your blog in exchange for a link back
to mine. Please shoot me an e-mail if interested.
Kudos!
Thank you for any other informative web site. Where else may just I get that type of
info written in such an ideal means? I’ve a venture that I
am simply now operating on, and I’ve been at the look out for such info.
Hey there, I think your blog might be having browser compatibility issues.
When I look at your website in Ie, it looks fine but when opening
in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up!
Other then that, terrific blog!
First of all I want to say excellent blog!
I had a quick question which I’d like to ask if you don’t mind.
I was curious to know how you center yourself and clear your thoughts before writing.
I have had a tough time clearing my mind in getting my thoughts
out there. I truly do enjoy writing but it just seems like the first 10 to 15 minutes are lost just trying to figure out how to begin. Any recommendations or tips?
Thanks!
When I initially left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox and from now on whenever a comment
is added I recieve four emails with the same comment.
There has to be a means you can remove me from that service?
Appreciate it!
With havin so much written content do you
ever run into any problems of plagorism or copyright infringement?
My website has a lot of completely unique content I’ve either authored myself or outsourced but it appears a lot of it is popping it up all over the web without my
permission. Do you know any ways to help reduce content from being stolen? I’d definitely appreciate it.
fantastic post, very informative. I ponder why the opposite specialists of this sector do not realize this.
You must continue your writing. I am sure, you’ve
a huge readers’ base already!
Excellent post. I definitely love this website.
Thanks!
Los vídeos IGTV son un formato de vídeo de larga duración en Instagram. En caso de que no puedas verlos inmediatamente por falta de tiempo, el descargador IGTV de StoriesIG te permite descargar los vídeos en tu dispositivo para verlos más tarde. Esta función garantiza que puedas acceder a los vídeos incluso cuando no estés conectado o si el vídeo original de IGTV ha sido eliminado. Hemos discutido las formas efectivas de ver la actividad de alguien en Instagram. KidsGuard Pro resulta muy útil cuando no sigues a la persona que quieres rastrear, o rara vez tienes la oportunidad de abrir Instagram en su dispositivo. Esta aplicación rastreadora de actividad en Instagram realmente funciona y te permite hacer un seguimiento de la actividad en Instagram de amigos o familiares sin que lo sepan. Sin embargo, la aplicación también tiene sus defectos. Necesitas acceder al dispositivo objetivo una vez para instalar la aplicación, y la sincronización de datos puede experimentar retrasos.
https://collinrepd467990.bloggazzo.com/28194638/comprar-100-seguidores-instagram
Una manera fácil y divertida de aumentar los seguidores que comentan en tus publicaciones de Instagram es realizar un concurso o sorteo. Puedes publicar en Instagram para promocionar el concurso, y pedir a los usuarios que participen comentando en la publicación. Puedes realizarlo durante una semana, donde los usuarios tengan que comentar cada día. Incluso puedes incorporar contenido generado por usuarios, al pedirles a los seguidores que publiquen fotos en las que te tengan que etiquetar o mencionar. Así que esfuérzate por encontrar publicaciones creativas y originales. Gracias a estas nuevas formas de posts, podrás descubrir qué tipo de historias, fotos o videos, son los que más gustan a tus seguidores. Y si directamente, estás perdido y no sabes como hacerlo, simplemente, ¡pregúntales! A los seguidores les encanta dar su opinión, eso sí haz las preguntas de una manera creativa, para incentivar que respondan a las mismas.
What’s Happening i’m new to this, I stumbled upon this I have found It positively helpful and it has aided me out loads.
I hope to give a contribution & assist other users like its helped me.
Great job.
El sistema es como un grifo de agua que va goteando cada cierto tiempo, las faucets consisten en lo mismo, la cantidad de «gotas» varían dependiendo de la faucets y del precio de cada criptomoneda. En 2010 la web de Gavin Andresen regalaba 5 btc! Uno de los principales riesgos al elegir ganar dinero con los sitios de faucet crypto es caer en un sitio falso. Además de los sitios desconocidos donde podrían perder tus datos, existen estafas reales creadas por piratas informáticos. Estos crean un sitio web desde cero y luego lo presentan a los usuarios como un auténtico sitio de crypto faucet. Este tipo de faucets ofrece un todo en uno. Desde una única interfaz, el usuario tiene acceso a los faucets de distintas blockchains. Para solicitar sus tokens, al igual que en los single faucets, los usuarios tan solo tendrán que conectar su wallet al faucet de la red en la que pretenden operar, y realizar las tareas pertinentes, ya sean sencillas o complejas.
http://e-dolphin.co.kr/bbs/board.php?bo_table=free&wr_id=0
La principal diferencia entre comprar Ethereum en un exchange y comprar Ethereum en un bróker online es que no eres el propietario de las criptomonedas cuando utilizas un bróker. ¿Quieres comprar Ethereum (ETH) OP instantáneamente usando tu tarjeta de crédito o débito? Has llegado al lugar correcto. Para presentar Ethereum, los fundadores de la plataforma iniciaron un crowdfunding el 22 de julio de 2014. Durante esta ronda de financiación, la gente podía comprar Ethereum por 31 centavos (USD) la pieza. La financiación fue un gran éxito porque la organización reunió lo suficiente para lanzarse el 30 de julio de 2015. El whitepaper de Ethereum fue escrito en 2013 por Vitalik Buterin. Buterin es un programador ruso de 26 años que estaba involucrado con la comunidad Bitcoin desde 2011. Él quería crear una nueva plataforma con menos recursos de mining (“minería”) en la que se pudieran crear aplicaciones descentralizadas. La idea de Vitalik fue el inicio de Ethereum.
This website was… how do you say it? Relevant!! Finally I’ve found something which
helped me. Many thanks!
I don’t know if it’s just me or if perhaps everybody else experiencing issues with your website.
It seems like some of the written text within your posts are running off the
screen. Can somebody else please provide feedback and let me
know if this is happening to them too? This may be a problem with my
internet browser because I’ve had this happen previously.
Kudos
We are a group of volunteers and opening a new scheme
in our community. Your website offered us with valuable info to work on. You have done an impressive job and our whole community will be thankful to
you.
Познакомьтесь с вселенной фильмов превосходного качества онлайн – лучший онлайн кинопортал. Наслаждаться кинолентами в интернете верное решение в 2024 году. Видеоконтент онлайн превосходном качестве http://bit.ly/kinokrad-2021-kinokrad-kino-krad
1xBet promo code “Open777”, you can also avail the 1xBet registration welcome bonus 100% up to €130. Get the newest promo codes for 1xBet, including the thrilling Promotion 2024. Benefit from bonus codes, sign-up bonuses, and even get a free bet bonus and cashback offers! There’s also a 1xBet India bonus for players in the country to enjoy. You can use the same PROTIPSTER 1xBet free promo code to enjoy a special bonus. You’ll receive a welcome bonus of 100% at up to Rs. 9750. Be sure to use the proper PROTIPSTER code to enjoy this bonus offer. 1xbet is currently one of the most popular and reputable sites on the online betting market. They’re one of the only bookmakers offering above a 100% welcome bonus which can be taken advantage of by using our exclusive promotional code STYVIP. This can see you eligible to claim up to €200, which is an excellent way to get started on the right foot. To answer the question what is 1xBet and discover more details about this bookmaker, read our 1xBet review.
https://www.blessin.info/forum/general-discussions/1xbet-minimum-deposit-and-withdrawal
Betting slip (betting coupon) is a special option that you need to fill in before the bet is placed. In this window, you can see your market, bet amount, bet type, as well as the amount of potential winnings. The bonus amount depends on the size of your bet stakes. If all your bets had stakes of $2 or more, you could get up to $100. If the wagers were over $5 each, you could earn a bonus of up to $250. If you bet more than $10 each time, the reward can go as high as $500. Losing streaks in sports betting are certainly no fun. 1xbet does their best to try to alleviate the pain with their ‘Series of Losing Bets’ bonus. If you are unfortunate enough to lose 20 consecutive bets you could be eligible for up to €500 depending on your betting stake. A €10 stake would be required to receive the full €500, while a €5 stake would net you €250 and a €1 stake would return you with €100.
Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
Мы предлагаем: сервисные центры в москве
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
Мы предлагаем: сервисные центры по ремонту техники в мск
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
Do you have a spam problem on this blog; I
also am a blogger, and I was wanting to know your situation; we have created some nice practices and we are looking to swap solutions with other
folks, why not shoot me an e-mail if interested.
Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.
You clearly know what youre talking about, why throw
away your intelligence on just posting videos to your weblog when you could be giving us something informative to read?
Incredible points. Sound arguments. Keep up
the good spirit.
Профессиональный сервисный центр по ремонту кофемашин по Москве.
Мы предлагаем: сервис кофемашин москва
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
It can be tough to get noticed by your target audience on Twitter, no matter if you’re just starting out or have been on the platform for a while. Take the guesswork and the time commitment out of your Twitter follower growth and buy real Twitter followers from Tweeteev! Answer: Absolutely! When you buy Twitter followers, we follow all rules of Twitter to increase your followers naturally. Hence, your account is never at risk. Buy Real Twitter followers, to give your account the boost it deserves amongst the USA audience. There are three types of accounts that people follow: At UseViral, we prioritize authenticity and only provide real Twitter followers. Our methods involve organic acquisition techniques, ensuring that the followers are real accounts operated by real individuals. We do not engage in any bot-related activities.
https://vbl.co.th/en/regarded-mainly-because-to-be-able-to-test-power-very-best-0nline-slot-machine-web-sites-excellent-taste-slots/
Become a specialist in Digital Media and pursue a creative career in media and journalism in multinationals, governments and international organizations. Students have an option of achieving two bachelor’s degrees simultaneously in 3 years in Geneva: a BA in Digital Media from IIG and the BSc (Hons) Business Management degree awarded by the University of Plymouth, UK. A popular career path for digital media majors is the creative role of animator. Basically, a multimedia artist or animator creates graphics using computer programmes or digital tools. Online degrees in digital media, whether it’s an associates, a bachelors, or even a masters in digital media online, often start out by giving you a diverse foundation. You can take introductory classes in photography, design, marketing, web development, and more. Later on, you’ll likely be given the option to focus on a specific type of media. Because of this flexibility, majoring in digital media arts can be a stepping stone to a range of careers.
Сервисный центр предлагает замена батареи bq 6200l aurora поменять дисплей bq 6200l aurora
Hello, i think that i saw you visited my web
site so i came to go back the choose?.I’m trying to in finding things to improve
my site!I guess its ok to use some of your concepts!!
Сервисный центр предлагает ремонт платы kodak z1485 is ремонт матрицы kodak z1485 is
Приветствуем вас на нашем веб-сайте!
Здесь вы найдёте всё необходимое
для успешного управления своими финансами.
Мы предлагаем широкий спектр финансовых продуктов, которые
помогут вам достичь ваших целей
и обеспечить стабильность в будущем.
В нашем ассортименте представлены различные виды банковских продуктов, инвестиции,
страхование, кредиты и многое другое.
Мы постоянно обновляем нашу базу данных, чтобы вы всегда были в курсе последних тенденций и инноваций на финансовом
рынке.
Наши специалисты помогут вам выбрать
наиболее подходящий продукт,
учитывая ваши индивидуальные потребности и предпочтения.
Мы предоставляем консультации и рекомендации, чтобы вы могли принять обоснованное
решение и избежать возможных рисков.
Не упустите возможность воспользоваться нашими услугами и откройте для себя мир
финансовых возможностей! Заходите на наш сайт, ознакомьтесь с каталогом продуктов и начните свой путь к финансовой стабильности прямо сейчас!
Условия и тарифы
I really like it when individuals come together and share views.
Great blog, stick with it!
08794l
Whoa a good deal of very good information!
My site … https://depostjateng.com/opini/cara-untuk-menghilangkan-bau-ketiak/
Профессиональный сервисный центр по ремонту компьютеров и ноутбуков в Москве.
Мы предлагаем: ремонт ноутбуков макбук
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
When someone writes an paragraph he/she retains the
plan of a user in his/her brain that how a user can know it.
Thus that’s why this article is perfect. Thanks!
It’s very trouble-free to find out any matter on web as
compared to books, as I found this piece of writing
at this website.
Профессиональный сервисный центр по ремонту Apple iPhone в Москве.
Мы предлагаем: ремонт айфона на дому в москве
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
Howdy! Do you use Twitter? I’d like to follow you if that would be okay.
I’m undoubtedly enjoying your blog and look forward to new updates.
Сервисный центр предлагает ремонт моноблоков hp ремонт моноблоков hp на дому
Сервисный центр предлагает ремонт телефонов vertu в москве сколько стоит ремонт телефона vertu
Hi there this is kinda of off topic but I was wondering if blogs use WYSIWYG editors or if you have
to manually code with HTML. I’m starting a blog soon but have no coding knowledge so I wanted to get guidance from someone with experience.
Any help would be enormously appreciated!
I like the helpful information you provide in your articles.
I’ll bookmark your blog and check again here frequently.
I’m quite certain I will learn a lot of new stuff right here!
Good luck for the next!
Сервисный центр предлагает ремонт корпуса asus m50sv ремонт платы asus m50sv
Link exchange is nothing else however it is just placing the other person’s
website link on your page at suitable place and other person will also do same
in favor of you.
Nice read, I just passed this onto a friend who was doing a little research on that. And he actually bought me lunch as I found it for him smile Thus let me rephrase that: Thanks for lunch!
Тут можно преобрести сейф жаростойкий сейф противопожарный купить
Thanks in support of sharing such a pleasant idea, post
is good, thats why i have read it entirely
I really like your blog.. very nice colors & theme.
Did you design this website yourself or did you hire someone to
do it for you? Plz reply as I’m looking to construct my own blog and would like to know where u got this from.
thanks
The technique of front loading may provide further advantages buy priligy tablets There is a wide range in the age of onset, with reported cases from people ages 15 to 73 years old
Тут можно преобрести оружейный шкаф купить в москве оружейный шкаф сейф купить
Тут можно сейф домой где купить сейф для дома
Тут можно преобрести пожаростойкие сейфы сейф огнестойкий в москве
Тут можно преобрести оружейный сейф интернет магазин оружейный шкаф купить москва
Тут можно преобрести огнестойкий сейф купить сейф огнестойкий в москве
Тут можно преобрести сейфы под оружие сейф для оружия купить в москве
Yesterday, while I was at work, my cousin stole my iPad and tested to see if it can survive a forty foot drop, just so she can be a youtube sensation. My apple ipad is now broken and she has 83 views.
I know this is completely off topic but
I had to share it with someone!
It’s in fact very complicated in this busy life to listen news on Television, so I simply use the web for that reason, and get the
most up-to-date news.
Тут можно преобрести сколько стоит сейф для ружья сейф охотничий
Тут можно преобрести купить оружейный шкаф купить сейф оружейный в москве
Сервисный центр предлагает качественый ремонт посудомоечных машин asko ремонт посудомоечных машин asko рядом
Тут можно преобрести купить огнеупорный сейф огнеупорные сейфы
Тут можно преобрести сейф для охотничьего ружья купить оружейные шкафы москва
Здесь можно преобрести купить сейф оптом сейф москва
Тут можно преобрести сейф пожаростойкий купить несгораемый сейф
Тут можно преобрести сейф оружейный купить сейфы для оружия
This paragraph is actually a nice one it assists new web visitors, who are wishing for blogging.