15、库函数开发小结

目录

0x01、初始化

0x02、数据输入输出

0x03、状态位、标志位

0x0001、事件

0x0002、标志位的检查与清除

0x04、外设函数分类


本节我们来总结一下ST库开发的步骤和共同点,在总结之前,我们来看一下基本所有外设都有的以下几类寄存器:

1、控制寄存器xxx_CR:这类寄存器是用来配置、控制相应外设的工作方式的,入GPIOx_CRL、GPIOx_CRH、AFIO_EXTICR1 ~  AFIO_EXTICR4,串口的USART_CR1 ~ USART_CR3等。

2、数据寄存器xxx_DR:这类寄存器主要是存储了外设进行输出输入的数据。如GPIOx_IDR、GPIOx_ODR、USART_DR等。

3、状态寄存器xxx_SR:这类寄存器主要存储了当前外设的运行状态,主要为一些标志位。如USART_SR、ADC_SR等。

0x01、初始化

使用ST库对外设进行初始化,一般有以下步骤:

1、定义一个xxx_InitTypeDef类型的初始化结构体。

2、根据使用需求,向这些初始化结构体的成员写入特定的控制参数。

3、填充好结构体之后,把这个结构体作为输入参数调用相应的外设库函数xxx_Init(),从而实现向寄存器写入控制参数,并配置好外设。

在以后的其他外设开发中,我们还会遇到各种类型的初始化结构体及初始化函数。如ADC_InitTypeDef,ADC_Init();I2C_InitTypeDef,I2C_Init()等。它们的应用方法是相同的,区别在于不通的外设,其结构体成员不一样,可输入参数相应也不同。只要理解了这些结构体成员所控制参数的意义,我们就能轻松的使用一个全新的外设。

0x02、数据输入输出

对外设的使用,一般涉及其输入和输出数据,ST官方库中有一类函数专门为此应用而生,如GPIO的输入输出函数:GPIO_ReadOutputDataBit();GPIO_ReadInputData()、GPIO_SetBit()还有USART的收发数据函数:USART_ReceiveData()、USART_SendData(),这类函数都是用于控制输入输出数据的。

这些函数控制相应外设数据寄存器DR的内容,达到控制输入输出的目的。使用这些函数的方法也是类似的。

1、通过输入参数,向函数指定要使用的是什么外设,如用(GPIOA、GPIO_Pin_5)选定PA5进行控制,用(USART1)来指定使用串口1外设。

2、若向外输出数据,则调用Output或Send函数,把要输出的数据变量作为函数的输入参数。

3、若为接收外部数据,则调用Read或Receive函数,读取函数的返回值来得到外部输入数据。

对于其他外设,也有类似的控制数据输入输出函数。如用ADC_GetConversionValue()函数来获取ADC转换所得到的数值;用I2C_SendData()函数来使用I2C接口进行发送数据。

0x03、状态位、标志位

当我们需要知道外设的工作状态时,就涉及一系列标志检查的ST官方库函数。

0x0001、事件

当外设完成了某些工作或出现某些状态的时候,会触发一些事件,这些事件会在状态寄存器SR中,以不同的寄存器位来记录。这些寄存器位称为相应的事件标志位。

如串口发送完成后,会在USART_SR寄存器中的位6置1,作为发送完成的时间标志。若发送寄存器为空,则会相应的在位7置1,作为发送寄存器已空的事件标志,如果我们不停的查询这个标志位,就可以得知串口的发送状态。

不停的查询标志位,会耗费内核宝贵的资源,ST以中断的方式解决这个问题,大部分事件都可以被配置成中断。例如,若把串口发送完成事件配置为可触发中断后,当串口发送完成时,外设不仅在USART_SR寄存器中记录事件,还会触发串口中断,从而可以进入相应的中断服务函数,针对不同的事件进行具体得处理,而内核也省去了不停查询标志位的工作。 

0x0002、标志位的检查与清除

假如我们把串口的发送完成事件、接收寄存器非空事件(串口接收到数据)都配置为可触发中断,因为它们触发的都是串口中断,所以中断时都是进入到同一个串口中断服务函数中处理的。那么我们再串口的中断服务函数中,就要区分这个中断究竟是由发送完成事件触发的,还是由接收到数据事件触发的。

在这个时候,我们就必须进行一次标志位检查了,对标志位进行检查的库函数,一般命名为xxx_GetFlagStatus()或xxx_Get ITStatus() ,功能分别为获取事件标志位状态和中断标志位状态。如前面使用过的读取串口标志位的函数USART_GetFlagStatus();EXTI的获取EXTI线状态的函数EXTI_GetFlagStatus()。

既然有标志位检查,自然也有清除标志位功能的函数。对标志位进行清除的ST库函数,一般命名为xxx_ClearFlag()或xxx_ClearTPendingBit()函数,功能分别为清除事件标志位和清除挂起的中断标志位。如串口的USART_ClearFlag(),EXTI的USART_ClearIPendingBit()。

这四类函数都是对应到外设的xxx_SR寄存器的。

清除标志位时,xxx_ClearFlag()和xxx_ClearITPendingBit()结果都是对xxx_SR寄存器进行清除的,但是在使用的时候,还是尽量在中断时使用xxx_ClearITPendingBit(),在非中断时采用xxx_ClearFlag()要严谨一点。

这些对标志位进行操作的函数都有统一的方法。

输入参数就是要检查的标志,如串口的发送完成标志USART_FLAG_TC、接收寄存器非空标志USART_FLAG_RXNE。检查函数具有返回值,返回值是SET或RESET,表示这个标志位被置位或者没有置位。而标志位清除函数就没有返回值了,调用函数后就直接把相应的标志位进行清除。

0x04、外设函数分类

其实ST官方库的库函数还有很多共同点,如外设都有xxx_Cmd()函数,用来使能外设;如 xxx_ITConfig()函数用来配置外设的事件触发中断。在此,对这些外设主要的共有函数进行了简单的分类,一般外设都具有以下的函数

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: hc32f460库函数开发手册是用于hc32f460芯片的库函数开发的指南。hc32f460是一款32位高性能微控制器,它的库函数开发手册提供了针对该芯片的各种库函数的详细说明和使用方法。 该手册包含了hc32f460的各个功能模块的库函数,包括IO口、ADC、UART、SPI、I2C、定时器、中断控制器等等。对于每个库函数,手册提供了函数原型、参数说明、返回值等详细的描述,以及示例代码和应用场景。 通过阅读hc32f460库函数开发手册,开发人员可以了解到如何使用库函数来实现各种功能。例如,如果想要配置一个IO口的输入输出方向和电平状态,可以通过查找手册中GPIO模块的库函数相关信息来完成。如果想要使用定时器来实现定时中断功能,同样可以通过手册中定时器模块的库函数相关信息来完成。 在进行hc32f460库函数开发时,手册可以作为开发人员的重要参考资料。它可以帮助开发人员正确使用库函数,提高开发效率,减少开发错误。同时,手册还包含了大量的示例代码和应用场景,对于初学者来说,可以通过这些示例代码更好地理解库函数的使用方法。 总的来说,hc32f460库函数开发手册是一本对于hc32f460微控制器库函数开发非常有帮助的指南,它提供了详细的库函数说明和示例代码,帮助开发人员快速掌握并使用hc32f460的库函数,从而实现各种功能。 ### 回答2: HC32F460库函数开发手册是一本详细介绍HC32F460系列微控制器库函数的手册。HC32F460是一款32位高性能微控制器,集成了丰富的外设模块和强大的处理能力,适用于工业控制、汽车电子、消费电子等领域。 该开发手册首先介绍了HC32F460系列微控制器的硬件架构和特性,包括芯片封装、内部外设、主频和存储器等方面的详细说明。接着,手册针对各个外设模块,如GPIO、定时器、串口等,详细介绍了每个模块的主要功能、寄存器的配置方法和实现技巧,并给出了相应的示例代码。 手册还详细介绍了HC32F460库函数的使用方法和注意事项。库函数是封装了芯片底层硬件操作的一种高级编程接口,可以极大地简化开发者的程序编写工作。该手册通过详细的代码说明和示例,指导开发者如何正确地使用库函数进行驱动开发和应用程序编写。 此外,手册还包含了HC32F460系列微控制器的软件开发环境的配置和使用方法,包括编译器、调试器和编程器的设置和使用。通过阅读该手册,开发者可以全面理解HC32F460系列微控制器的功能和使用方法,从而更高效地进行开发工作。 总之,HC32F460库函数开发手册是HC32F460系列微控制器开发的重要参考资料,通过阅读和理解手册内容,开发者可以掌握HC32F460的硬件和软件开发技术,进而进行高效、可靠的嵌入式应用程序开发。 ### 回答3: HC32F460是华大基于ARM Cortex-M4内核的一款32位微控制器芯片系列。开发手册是华大提供给开发者的一份重要文档,其中包含了HC32F460系列芯片的库函数开发指南和详细资料。 HC32F460库函数开发手册是为了帮助开发者更好地使用和了解这款芯片的库函数而编写的。库函数是一组事先编写好的代码库,集成了各种功能和功能模块的函数接口,有助于开发者快速开发应用程序。 开发手册详细介绍了HC32F460系列芯片的库函数的使用方法和功能特点,通过详细的函数说明和示例代码,开发者可以了解不同功能模块的库函数调用方法和参数设置。开发手册还提供了丰富的应用场景案例,帮助开发者理解不同函数在实际应用中的作用和用法。 在开发手册中,开发者可以学习到如何初始化芯片和外设、如何访问芯片的不同寄存器和功能模块、如何使用中断和定时器等功能、如何与外部设备进行通信等。手册还提供了详细的时序图和电路框图,帮助开发者更好地理解和设计应用电路。 总之,HC32F460库函数开发手册对于开发者来说是一份不可或缺的工具,它提供了详细的指导和参考资料,帮助开发者快速上手和开发应用程序。通过学习和使用开发手册,开发者可以充分发挥HC32F460芯片的功能和性能,实现更高效、可靠的应用开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值