提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、引用文件
#include "fm33lg0xx_fl_gpio.h"
二、快速IO操作指南
1.GPIO位输出高电平⬆⬆
FL_GPIO_SetOutputPin(GPIOC,FL_GPIO_PIN_1); /*PC1 输出高电平*/
2.GPIO位输出低电平⬇⬇
FL_GPIO_ResetOutputPin(GPIOC,FL_GPIO_PIN_1); /* PC1 输出低电平 */
3.GPIO位输出电平翻转
FL_GPIO_ToggleOutputPin(GPIOC,FL_GPIO_PIN_1); /* PC1 输出翻转 */
4.GPIO端口8位并口输出
#define PC07_Out_Pin FL_GPIO_PIN_0 | FL_GPIO_PIN_1 | FL_GPIO_PIN_2 | FL_GPIO_PIN_3 | \
FL_GPIO_PIN_4 | FL_GPIO_PIN_5 | FL_GPIO_PIN_6 | FL_GPIO_PIN_7
#define PC07_Out(GPIOx,Data) FL_GPIO_WriteOutputPort(GPIOx, Data + (FL_GPIO_ReadOutputPort(GPIOx) & (~(PC07_Out_Pin))));
PC07_Out(GPIOC,0xAA);/* PC0~PC7输出0xAA */
PC07_Out(GPIOC,0x55);/* PC0~PC7输出0x55 */
5.GPIO端口16位并口输出
FL_GPIO_WriteOutputPort(GPIOC,0xAA55); /* PC0~PC15输出0xAA55 */
6.GPIO输出位读取
FL_GPIO_GetOutputPin(GPIOC,FL_GPIO_PIN_1); /* PC1 输出位读取 */
7.GPIO输入位读取判断
#define PC1Data (FL_GPIO_ReadInputPort(GPIOC)&FL_GPIO_PIN_1)
if(PC1Data != 0 )
{
/* 当前PC1输入为高电平 */
}
else
{
/* 当前PC1输入为低电平 */
}
8.GPIO输入16位并口读取
uint16_t GPIOC_Data=0;
GPIOC_Data = FL_GPIO_ReadInputPort(GPIOC);/* PC0~PC15端口数据读取 */
三、函数库源码
1.GPIO位输出高电平函数源代码
* @brief Set pin output 1
* @rmtoll DSET FL_GPIO_SetOutputPin
* @param GPIOx GPIO Port
* @param pin This parameter can be one of the following values:
* @arg @ref FL_GPIO_PIN_0
* @arg @ref FL_GPIO_PIN_1
* @arg @ref FL_GPIO_PIN_2
* @arg @ref FL_GPIO_PIN_3
* @arg @ref FL_GPIO_PIN_4
* @arg @ref FL_GPIO_PIN_5
* @arg @ref FL_GPIO_PIN_6
* @arg @ref FL_GPIO_PIN_7
* @arg @ref FL_GPIO_PIN_8
* @arg @ref FL_GPIO_PIN_9
* @arg @ref FL_GPIO_PIN_10
* @arg @ref FL_GPIO_PIN_11
* @arg @ref FL_GPIO_PIN_12
* @arg @ref FL_GPIO_PIN_13
* @arg @ref FL_GPIO_PIN_14
* @arg @ref FL_GPIO_PIN_15
* @arg @ref FL_GPIO_PIN_ALL
* @retval None
*/
__STATIC_INLINE void FL_GPIO_SetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
{
SET_BIT(GPIOx->DSET, ((pin & 0xffff) << 0x0U));
}
2.GPIO位输出低电平函数源代码
* @brief Set pin output 0
* @rmtoll DRST FL_GPIO_ResetOutputPin
* @param GPIOx GPIO Port
* @param pin This parameter can be one of the following values:
* @arg @ref FL_GPIO_PIN_0
* @arg @ref FL_GPIO_PIN_1
* @arg @ref FL_GPIO_PIN_2
* @arg @ref FL_GPIO_PIN_3
* @arg @ref FL_GPIO_PIN_4
* @arg @ref FL_GPIO_PIN_5
* @arg @ref FL_GPIO_PIN_6
* @arg @ref FL_GPIO_PIN_7
* @arg @ref FL_GPIO_PIN_8
* @arg @ref FL_GPIO_PIN_9
* @arg @ref FL_GPIO_PIN_10
* @arg @ref FL_GPIO_PIN_11
* @arg @ref FL_GPIO_PIN_12
* @arg @ref FL_GPIO_PIN_13
* @arg @ref FL_GPIO_PIN_14
* @arg @ref FL_GPIO_PIN_15
* @arg @ref FL_GPIO_PIN_ALL
* @retval None
*/
__STATIC_INLINE void FL_GPIO_ResetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
{
SET_BIT(GPIOx->DRST, ((pin & 0xffff) << 0x0U));
}
3.GPIO位输出电平翻转函数源代码
* @brief Toggle output pin
* @rmtoll DO FL_GPIO_ToggleOutputPin
* @param GPIOx GPIO Port
* @param pin This parameter can be one of the following values:
* @arg @ref FL_GPIO_PIN_0
* @arg @ref FL_GPIO_PIN_1
* @arg @ref FL_GPIO_PIN_2
* @arg @ref FL_GPIO_PIN_3
* @arg @ref FL_GPIO_PIN_4
* @arg @ref FL_GPIO_PIN_5
* @arg @ref FL_GPIO_PIN_6
* @arg @ref FL_GPIO_PIN_7
* @arg @ref FL_GPIO_PIN_8
* @arg @ref FL_GPIO_PIN_9
* @arg @ref FL_GPIO_PIN_10
* @arg @ref FL_GPIO_PIN_11
* @arg @ref FL_GPIO_PIN_12
* @arg @ref FL_GPIO_PIN_13
* @arg @ref FL_GPIO_PIN_14
* @arg @ref FL_GPIO_PIN_15
* @arg @ref FL_GPIO_PIN_ALL
* @retval None
*/
__STATIC_INLINE void FL_GPIO_ToggleOutputPin(GPIO_Type *GPIOx, uint32_t pin)
{
if(pin&GPIOx->DO)
{
WRITE_REG(GPIOx->DRST, pin);
}
else
{
WRITE_REG(GPIOx->DSET, pin);
}
}
4.GPIO端口16位并口输出函数源代码
* @brief Set GPIO output data
* @rmtoll DO FL_GPIO_WriteOutputPort
* @param GPIOx GPIO Port
* @param output Level value for each pin of the port
* @retval None
*/
__STATIC_INLINE void FL_GPIO_WriteOutputPort(GPIO_Type *GPIOx, uint32_t output)
{
MODIFY_REG(GPIOx->DO, (0xffffU << 0U), (output << 0U));
}
5.GPIO输出位读取函数源代码
* @brief Get GPIO output pin status
* @rmtoll DO FL_GPIO_GetOutputPin
* @param GPIOx GPIO Port
* @param pin This parameter can be one of the following values:
* @arg @ref FL_GPIO_PIN_0
* @arg @ref FL_GPIO_PIN_1
* @arg @ref FL_GPIO_PIN_2
* @arg @ref FL_GPIO_PIN_3
* @arg @ref FL_GPIO_PIN_4
* @arg @ref FL_GPIO_PIN_5
* @arg @ref FL_GPIO_PIN_6
* @arg @ref FL_GPIO_PIN_7
* @arg @ref FL_GPIO_PIN_8
* @arg @ref FL_GPIO_PIN_9
* @arg @ref FL_GPIO_PIN_10
* @arg @ref FL_GPIO_PIN_11
* @arg @ref FL_GPIO_PIN_12
* @arg @ref FL_GPIO_PIN_13
* @arg @ref FL_GPIO_PIN_14
* @arg @ref FL_GPIO_PIN_15
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_GPIO_GetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
{
return (uint32_t)(READ_BIT(GPIOx->DO, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
}
6.GPIO输入16位并口读取函数源代码
* @brief Get input data
* @rmtoll DIN FL_GPIO_ReadInputPort
* @param GPIOx GPIO Port
* @retval Input data register value of port
*/
__STATIC_INLINE uint32_t FL_GPIO_ReadInputPort(GPIO_Type *GPIOx)
{
return (uint32_t)(READ_BIT(GPIOx->DIN, (0xffffU << 0U)) >> 0U);
}
四、总结
支持国产