- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32HAL库函数
STM32HAL库库
概概述述
本⽂本是我对我 ⾃⼰平 ⽇⾥使⽤STM32的总结,结合了⽹上和 ⾃⼰的 解,⽅便 ⾃⼰以后回顾学习。只包含在学习过程有⽤到的。
1.GPIO
(1)HAL_GPIO_ DeInit
功能:这个函数的主要功能是将我们在引脚初始化之后的引脚恢复成默认的状态,即各个寄存器复位时的值
例 :HAL_GPIO_DeInit(GPIOx,GPIO_PIN_X);
(2)HAL_GPIO_ EXTI_Callback
功能:这个函数是中断回调函数,可以 解为中断函数具体要响应的动作
例 :HAL_GPIO_EXTI_Callback(GPIO_PIN_X);
注意 :禁⽌使⽤HAL_Delay在中断中进⾏延时,会导致程序卡死。因HAL_Delay也是利⽤中断进⾏延时,但是中断等级为最低级,会导致
进不去中断,读取不到时间,导致卡死。可以⾃⼰编写延时程序。或者修改滴答定时器的中断优先级,⾄少⽐所⽤的中断⾼。
(3)HAL_GPIO_ EXTI_IR Handler
功能:这个函数是外部中断服务函数,⽤来响应外部中断的触发,函数实体⾥⾯有两个功能,⾸先清楚中断标志,调⽤
HAL_GPIO_EXTI_Callback函数进⾏具体要处 的事情
例 :HAL_GPIO_EXTI_IRQHandler(uint 16_t GPIO_PIN_X);
(4)HAL_GPIO_Init
功能:这个函数主要⽤来初始化我们需要⽤到的引脚的⼯作模式,包括具体引脚的⼯作速度、是否复⽤模式、上下拉等等参数。
例 :GPIO_InitTypeDef GPIO_Init_Structure;
GPIO_Init_Structure. Pin = GPIO_PIN_ 10 | GPIO_PIN_ 11; //选择对PB10和PB11进⾏设置
GPIO_Init_Structure. Mode = GPIO_MODE_OUTPUT_OD; //设置输出为上拉模式 (PP改为OD为开漏)
GPIO_Init_Structure. Speed = GPIO_SPEED_FREQ_HIGH; //速度设置为⾼速 100M
HAL_GPIO_Init(GPIOB,GPIO_Init_Structure);
(5)HAL_GPIO_ LockPin
功能:这个函数看函数名称就是锁住的意思,⽐如说⼀个引脚的当前状态是 1,使⽤此函数后,当此引脚电平保持为⾼电平,并⽆法更改。
例 :HAL_GPIO_LockPin(GPIOX,GPIO_PIN_X);
(6)HAL_GPIO_ ReadPin
功能:检测这个引脚当前状态值,函数返回值为0或1。
例 :HAL_GPIO_ReadPin(GPIOX,GPIO_PIN_X);
(7)HAL_GPIO_TogglePin
功能:这个函数⽤来翻转某个引脚的电平状态,我⽤的最多的场合是LED灯的翻转,也就是LED闪烁。
例 :HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_ 10) ;
(8)HAL_GPIO_WritePin
功能:这个函数从字⾯意思来看就是给某个引脚写0或1,但是不要 解成,写1就是使能之类的意思,有些寄存器写1是擦除的意思,这⼀
点要谨记。
例 :HAL_GPIO_WritePin(GPIOB,GPIO_PIN_ 10,GPIO_PIN_SET) //设置为⾼电平
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_ 10,GPIO_PIN_RESET) //设置为低电平
2.延延时时Delay
(1)毫毫秒秒延延 时时
说明:STM32HAL库 ⾃带毫秒延时
例:HAL_Delay (x);
(2)微微秒秒延延 时时
说明:我利⽤⽰波器写的微秒延时 (只在STM32F103FZET6⽤过)
例
#define CPU_ FREQUENCY_ MHZ 72
void dela _xus(__ IO uint32_t nTime)// 1为2uM 2为4uM 4为5uM
{
int old_val,new_val,val;
if(nTime 900)
{
文档评论(0)