历史上的今天
今天是:2024年12月21日(星期六)
2018年12月21日 | stm32的外设初始化步骤,以定时器为例。
2018-12-21 来源:eefocus
我这个程序的目的在于让定时器开启更新中断,实现定时器1S中断一次然后在中断函数中LED电平翻转一次。
1.首先先开启这个外设的时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //开启定时器1 的时钟APB2
2.定义这个外设的初始化结构体:TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //定时器模式初始化结构体 定义别名为TIM_TimeBaseInitStructure
3.把这个结构体内成员参数设置:
TIM_TimeBaseInitStructure.TIM_Period = 9999; //自动重装载值 0-9999 大概为1s翻转电平 周期为2s
TIM_TimeBaseInitStructure.TIM_Prescaler=7199; //定时器分频 72M/7200=10000hz
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; //滤波器的分频因子
4.调用这个外设的初始化函数:TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);
5.允许定时器1中断开启:TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE ); //使能指定的TIM1中断,允许更新中断
6.外设的使能开启:TIM_Cmd(TIM1, ENABLE); //使能TIM1
7.因为这个是定时器的中断所以还需设置中断优先级。抢占以及响应优先级的设置。NVIC。每个中断都需设置一个。
//中断优先级NVIC设置
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; //TIM1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
8.整个系统的设置中断分组,只需设置一次:一般在main函数中调用一次就OK。
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
9.编写中断服务函数: void TIM1_UP_IRQHandler(void) //TIM1中断
留此为证。
史海拾趣
|
钽电容 长的话是+-0.2 ,宽是+-0.1 高 (MM) A 型的尺寸 3.2 X1.6 X1.6 俗称: A(3216) B 型的尺寸 3.5 X2.8 X1.9 俗称: B(3528) C 型的尺寸 6.0X 3.2X 2.6 俗称: C(6032) D 型的尺寸 7.3 X4.3 X2.9&nb ...… 查看全部问答> |
|
我用编译好的eboot 下载nk.bin ,老是出现Checksum failure on record , ABORT!!! ****** 不知道是什么原因? 是不是 cs8900a 不稳定造成的?我的平台S3C2440 + 64M NANDFLASH + 64M RAM wince5.0… 查看全部问答> |
|
一段代码: //创建设备名称 UNICODE_STRING devName; RtlInitUnicodeString(&devName,L\"\\\\Device\\\\MyDDKDevice\"); ...… 查看全部问答> |
|
把kernel从vivi向u-boot移植的时候遇到问题了! 三星提供的kernel是for vivi 的,但俺想用u-boot来引导,结果移植上去之后,u-boot是跑起来了,但是引导kernel却出问题了 看了kernel的头部的二进制数据,发现kernel的格式竟然还和bootloader的类型有关,for vivi的kernel的头就是适合vivi,不 ...… 查看全部问答> |
|
private void button1_Click(object sender, EventArgs e) { MySqlParameter[] paramter = &nbs ...… 查看全部问答> |
|
本人用的87c591,调试过程中存在这样的问题 (1)将变量地址设置到0x4000和0x4003,并且将一组数组设置到0x8000为起始地址,数组长度为245,如果设置为大模式,即xdata模式,将程序烧写进eeprom之后无法正常启动,其中寄存器的设置已经更改。 (2 ...… 查看全部问答> |
|
Stellaris® MCU 的 Cortex 微控制器软件接口标准 (CMSIS):DSP 头文件 TI新出的资料 Stellaris® MCU 的 Cortex 微控制器软件接口标准 (CMSIS):DSP 头文件… 查看全部问答> |




