stm32各模块函数写法模版基于V35固件库.docx
- 文档编号:2877090
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:17
- 大小:22.61KB
stm32各模块函数写法模版基于V35固件库.docx
《stm32各模块函数写法模版基于V35固件库.docx》由会员分享,可在线阅读,更多相关《stm32各模块函数写法模版基于V35固件库.docx(17页珍藏版)》请在冰豆网上搜索。
stm32各模块函数写法模版基于V35固件库
STM32学习笔记
GPIO口
GPIO初始化
voidGPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure;//声明结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开功能时钟(再写这句程序的时候,必须进行时钟系统初始化的操作)。
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//指明操作对象引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置IO口时钟为50MHz/10MHz/2MHz
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置推挽输出
/*GPIO_Mode_AIN模拟输入
GPIO_Mode_IN_FLOATING浮空输入(一般为中断所使用)。
GPIO_Mode_IPD下拉输入
GPIO_Mode_IPU上拉输入
GPIO_Mode_Out_OD开漏输出
GPIO_Mode_Out_PP推挽输出
GPIO_Mode_AF_OD复用开漏输出
GPIO_Mode_AF_PP复用推挽输出*/(一般用在点灯)。
GPIO_Init(GPIOA,&GPIO_InitStructure);//执行初始化IO口
}
GPIO常用函数
GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//置高IO口
GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//置低IO口
GPIO_WriteBit(GPIOA,GPIO_Pin_4,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_4)));//翻转IO口
GPIOA->ODR=0X0010;//IO口直接赋值语句
GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)(读取该口的电压值,相当于AVR的pin)。
若IO口为高电平,则这个函数返回为1,为低电平时返回为0.
SysTick系统时钟
SysTick配置函数
if(SysTick_Config(SystemCoreClock/3000))//配置时钟的频率,改变数字可改变频率,数字越大频率越快
{
/*Captureerror*/
while
(1);
}
EXTI中断
外部中断
外部中断IO口设置
voidGPIO_EXTI_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENABLE);//使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能复用IO时钟
GPIO_InitTypeDefGPIO_InitStructure;//声明IO口初始化结构体
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//指定PD.06为操作对象
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//设置模式为浮空输入
GPIO_Init(GPIOC,&GPIO_InitStructure);//初始化IO口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14;//指定PD.13,14为操作对象
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//设置模式为浮空输入
GPIO_Init(GPIOD,&GPIO_InitStructure);//初始化IO口
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource6);//将PC.06映射到外部中断
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource13);//将PD.13映射到外部中断
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource14);//将PD.14映射到外部中断
}
外部中断初始化
voidEXTI_Configuration(void)
{
EXTI_InitTypeDefEXTI_InitStructure;//声明外部中断初始化结构体
EXTI_InitStructure.EXTI_Line=EXTI_Line6|EXTI_Line13|EXTI_Line14;//使能外部中断线路6,13,14
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//设置EXTI线路模式为中断
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;//设置触发方式为上升沿
EXTI_InitStructure.EXTI_LineCmd=ENABLE;//使能中断线路
EXTI_Init(&EXTI_InitStructure);//初始化结构体
}
外部中断向量&优先级设定
voidNVIC_EXTI_Configuration(void)
{
NVIC_InitTypeDefNVIC_InitStructure;//声明中断向量&优先级设定结构体
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//选择中断向量组别为2组
NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;//指定外部中断向量
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//设置该中断的先占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//设置该中断的从优先级
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能该外部中断
NVIC_Init(&NVIC_InitStructure);//初始化外部中断
NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;//指定外部中断向量
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//设置该中断的先占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//设置该中断的从优先级
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能该外部中断
NVIC_Init(&NVIC_InitStructure);//初始化外部中断
}
由抢先优先级和从优先级实现了中断嵌套,进而使程序即使处理更加要紧的事情。
且高的抢先优先级可以打断低的抢先优先级,当抢先优先级相同时,那就比较从优先级,先响应高的。
当二者都相同时,先响应物理地址低的中断。
外部中断函数
/*example1*/
voidEXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line6)!
=RESET)
//如果对应的中断线路触发事件,注意可以一个中断向量对应多个中断引脚
{
/*addcode*/
EXTI_ClearITPendingBit(EXTI_Line6);//清中断标志
}
}
/*example2*/
voidEXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line13)!
=RESET)
//如果对应的中断线路13触发事件,注意可以一个中断向量对应多个中断引脚
{
/*addcode*/
EXTI_ClearITPendingBit(EXTI_Line13);//清中断标志位
}
if(EXTI_GetITStatus(EXTI_Line14)!
=RESET)
//如果对应的中断线路14触发事件,注意可以一个中断向量对应多个中断引脚
{
/*addcode*/
EXTI_ClearITPendingBit(EXTI_Line14);//清中断标志位
}
}
中断channel表
WWDG_IRQChannel窗口看门狗中断0x00
PVD_IRQChannelPVD通过EXTI探测中断
TAMPER_IRQChannel篡改中断
RTC_IRQChannelRTC全局中断
FlashItf_IRQChannelFLASH全局中断
RCC_IRQChannelRCC全局中断
EXTI0_IRQChannel外部中断线0中断
EXTI1_IRQChannel外部中断线1中断
EXTI2_IRQChannel外部中断线2中断
EXTI3_IRQChannel外部中断线3中断
EXTI4_IRQChannel外部中断线4中断
DMAChannel1_IRQChannelDMA通道1中断
DMAChannel2_IRQChannelDMA通道2中断
DMAChannel3_IRQChannelDMA通道3中断
DMAChannel4_IRQChannelDMA通道4中断
DMAChannel5_IRQChannelDMA通道5中断
DMAChannel6_IRQChannelDMA通道6中断
DMAChannel7_IRQChannelDMA通道7中断
ADC_IRQChannelADC全局中断
USB_HP_CANTX_IRQChannelUSB高优先级或者CAN发送中断
USB_LP_CAN_RX0_IRQChannelUSB低优先级或者CAN接收0中断
CAN_RX1_IRQChannelCAN接收1中断
CAN_SCE_IRQChannelCANSCE中断
EXTI9_5_IRQChannel外部中断线9-5中断(5至9对应一个中断源)。
TIM1_BRK_IRQChannelTIM1暂停中断
TIM1_UP_IRQChannelTIM1刷新中断
TIM1_TRG_COM_IR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stm32 模块 函数 写法 模版 基于 V35 固件库