1.IO配置 略
2.TIM配置
void TIM2_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period =359999;
TIM_TimeBaseStructure.TIM_Prescaler = 99;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE ); 务必使能定时器中断
TIM_Cmd(TIM2, ENABLE); //????TIM32
}
3.中断向量配置
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure one bit for preemption priority */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //中断组别 0抢占优先级 4位响应优先级 16个级别
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //中断通道设置
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
4.中断服务函数
void TIM2_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//清除中断标志位
/*写入函数*/
}
关键字:STM32 定时器 中断配置
引用地址:
STM32 定时器中断配置心得【自用】
推荐阅读最新更新时间:2024-11-11 11:55
STM32 字节对齐 #pragma pack
1、对齐原则 min(sizeof(word ), 4) = 2,因此是 2 字节对齐,而不是我们认为的 4 字节对齐。 1)每个成员分别按自己的方式对齐,并能最小化长度; 2)复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度; 3)对齐后的结构体整体长度必须是成员中最大的对齐参数的整数倍,这样在处理数组时可以保证每一项都边界对齐。 对于数组,比如 char a : 它的对齐方式和分别写 3 个 char 是一样的,也就是说它还是按 1 个字节对齐; 如果是 typedef char Array3 : Array3 这种类型的对齐方式还是按 1 个字节
[单片机]
Pic18F25K80 16位模式下的定时器0配置
项目用到了PIC18F25K80单片机的定时器0作为系统的节拍。在设计中发现定时器第一次进入中断的跟第二次进入中断时间都比较长,原来只配置了20ms ,实际大概2S左右。第三次以后进入中断的时间是正常的。当时比较费解这个问题。。。。 刚开始以为是刚上电,系统时钟不稳定所造成的。所以在上电后加了较长的延时后,现来配置定时器,问题依旧。 通过阅读手册,和查阅相关的资料才最终发现问题。 修改前的配置函数: void timer0_init(void) { TMR0L = 0x8E; //预装载值低字节(65535-625)%256 TMR0H = 0xFD; //预装载值高字节(65535-625)/256 T0CON =
[单片机]
STM32之点亮LED灯程序
原理图: 程序: #include stm32f10x.h GPIO_InitTypeDef GPIO_InitStructure; #define LED1_ON GPIO_SetBits(GPIOB, GPIO_Pin_5); //#define LED1_ON GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET); #define LED1_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_5); //#define LED1_OFF GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_RESET) ; #def
[单片机]
STM32微控制器可连接移动平台子系统
中国,2014年7月1日 ——意法半导体最新推出的专用低压STM32微控制器微助力设计人员克服在为主处理器增加辅助芯片(companion chip)时所面临的挑战。新系列专用低压微控制器与主处理器的数字电源域(digital power domain)相同,例如1.8V电源,同时准许片上外设使用电压更高的电源,例如,3.3V,从而避免了常见的性能与电压之间的矛盾问题。 STM32F038/48/58/78和STM32F318/28/58/78低压辅助微控制器是设计人员提高模块划分灵活性的理想解决方案。当需要模拟电压动态范围很宽或直接连接USB设备时,单片整合1.8V数字电源域和独立模拟电源域具有特别强的优势。 § ST
[单片机]
STM32的PWM波形输出配置的大神总结
本文分享STM32之PWM波形输出配置总结。 一. TIMER分类: STM32中一共有11个定时器,其中TIM6、TIM7是基本定时器;TIM2、TIM3、TIM4、TIM5是通用定时器;TIM1和TIM8是高级定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick。 其中TIM1和TIM8是能够产生3对PWM互补输出,常用于三相电机的驱动,时钟由APB2的输出产生。TIM2-TIM5是普通定时器,TIM6和TIM7是基本定时器,其时钟由APB1输出产生。 二、PWM波形产生的原理: 通用定时器可以利用GPIO引脚进行脉冲输出,在配置为比较输出、PWM输出功能时,捕获/比较寄存器T
[单片机]
STM32 大小端模式 与 堆栈及其增长方向分析
栈增长和大端/小端问题是和CPU相关的两个问题. 1,首先来看:栈(STACK)的问题. 函数的局部变量,都是存放在 栈 里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以 战舰 stm32 开发板 为例,在startup_stm32f10x_hd.s里面,开头就有: Stack_Size EQU 0x00000800 表示栈大小是0X800,也就是2048字节.这样,CPU处理任务的时候,函数局部变量做多可占用的大小就是:2048字节,注意:是所有在处理的函数,包括函数嵌套,递归,等等,都是从这个 栈 里面,来分配的. 所以,如果一个函数的局部变量过多,比如在函数里面定义一个u8
[单片机]
STM32程序加载---网络
一、设计流程 编写IAP加载程序,使用网口传输数据,并将.bin文件写入。单片机启动的时候按住某一个按键跳转到程序加载流程,否则跳转到应用程序入口地址执行。 二、程序分析 1、main程序 int main(void) { uint32_t flag = 0x00; #ifdef SERIAL_DEBUG DebugComPort_Init(); printf( rn %s , __VESION); #endif /* Initialize Key Button mounted on STM324xG-EVAL board */ IAP_Key_Init();
[单片机]
STM32(Cortex-M3)中有两个优先级的概念
STM32(Cortex-M3)中有两个优先级的概念 抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断
[单片机]