stm8s函数库应用笔记待续.docx

上传人:b****7 文档编号:9072731 上传时间:2023-02-03 格式:DOCX 页数:22 大小:21.68KB
下载 相关 举报
stm8s函数库应用笔记待续.docx_第1页
第1页 / 共22页
stm8s函数库应用笔记待续.docx_第2页
第2页 / 共22页
stm8s函数库应用笔记待续.docx_第3页
第3页 / 共22页
stm8s函数库应用笔记待续.docx_第4页
第4页 / 共22页
stm8s函数库应用笔记待续.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

stm8s函数库应用笔记待续.docx

《stm8s函数库应用笔记待续.docx》由会员分享,可在线阅读,更多相关《stm8s函数库应用笔记待续.docx(22页珍藏版)》请在冰豆网上搜索。

stm8s函数库应用笔记待续.docx

stm8s函数库应用笔记待续

STM8庫函數學習筆記之GPIO

【整理者】

【提供者】885783

【详细说明】STM8庫函數學習筆記之GPIO

STM8庫函數學習筆記之GPIO

作者:

BH7KQK

日期:

2010.12.30

相關的函數:

voidGPIO_DeInit(GPIO_TypeDef*GPIOx);

voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefGPIO_Pin,GPIO_Mode_TypeDefGPIO_Mode);

voidGPIO_Write(GPIO_TypeDef*GPIOx,u8PortVal);

voidGPIO_WriteHigh(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefPortPins);

voidGPIO_WriteLow(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefPortPins);

voidGPIO_WriteReverse(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefPortPins);

u8GPIO_ReadInputData(GPIO_TypeDef*GPIOx);

u8GPIO_ReadOutputData(GPIO_TypeDef*GPIOx);

BitStatusGPIO_ReadInputPin(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefGPIO_Pin);

voidGPIO_ExternalPullUpConfig(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefGPIO_Pin,FunctionalStateNewState);

//---------------------------------------------------------------------------------------

voidGPIO_DeInit(GPIO_TypeDef*GPIOx);

這個函數用來恢復指定端口的寄存器ODR、DDR、CR1及CR2到默認值0x00,即無中斷功能的浮動輸入,無返回值。

參數:

GPIOx:

GPIOA到GPIOI可選。

示例:

恢復GPIOB的相應寄存器為默認值

GPIO_DeInit(GPIOB);

//---------------------------------------------------------------------------------------

voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefGPIO_Pin,GPIO_Mode_TypeDefGPIO_Mode);

這個函數用來配置指定端口的各個引腳功能,無返回值。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

GPIO_Pin:

要初始化的引腳,可以用“或”方式選擇多個引腳,

可選值:

GPIO_PIN_0選擇0引腳

GPIO_PIN_1選擇1引腳

GPIO_PIN_2選擇2引腳

GPIO_PIN_3選擇3引腳

GPIO_PIN_4選擇4引腳

GPIO_PIN_5選擇5引腳

GPIO_PIN_6選擇6引腳

GPIO_PIN_7選擇7引腳

GPIO_PIN_LNIB低四位引腳選擇,即同時選擇PIN_0到PIN_3。

GPIO_PIN_HNIB高四位引腳選擇,即同時選擇PIN_4到PIN_7。

GPIO_PIN_ALL選擇全部引腳,即同時選擇PIN_0到PIN_7。

GPIO_Mode:

工作模式。

可選值:

GPIO_MODE_IN_FL_NO_IT無中斷功能的浮動輸入。

GPIO_MODE_IN_PU_NO_IT無中斷功能的上拉輸入。

GPIO_MODE_IN_FL_IT帶中斷功能的浮動輸入。

GPIO_MODE_IN_PU_IT帶中斷功能的上拉輸入。

GPIO_MODE_OUT_OD_LOW_FAST高速開漏低電平輸出,可工作到10MHz。

GPIO_MODE_OUT_PP_LOW_FAST高速推挽低電平輸出,可工作到10MHz。

GPIO_MODE_OUT_OD_LOW_SLOW低速開漏低電平輸出,可工作到2MHz。

GPIO_MODE_OUT_PP_LOW_SLOW低速推挽低電平輸出,可工作到2MHz。

GPIO_MODE_OUT_OD_HIZ_FAST高速開漏高阻態輸出,可工作到10MHz。

GPIO_MODE_OUT_PP_HIGH_FAST高速推挽高電平輸出,可工作到10MHz。

GPIO_MODE_OUT_OD_HIZ_SLOW低速開漏高阻態輸出,可工作到2MHz。

GPIO_MODE_OUT_PP_HIGH_SLOW低速推挽高電平輸出,可工作到2MHz。

示例:

把GPIOB的引腳0、1、4配置為高速推挽高電平輸出。

GPIO_Init(GPIOB,(GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4),GPIO_MODE_OUT_PP_HIGH_FAST);

//---------------------------------------------------------------------------------------

voidGPIO_Write(GPIO_TypeDef*GPIOx,u8PortVal);

這個函數用來輸出一個八位的值到指定的端口,無返回值。

所需条件:

该端口必须配置為输出模式。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

PortVal:

為無符號8位數值。

示例:

端口B輸出0x22。

GPIO_Write(GPIOB,0x22);

//---------------------------------------------------------------------------------------

voidGPIO_WriteHigh(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefPortPins);

這個函數用來置位指定端口的一個或多個引腳,即置相應引腳輸出為高電平,無返回值。

所需条件:

该端口必须配置為输出模式。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

PortPins:

要置位引腳,可以用“或”方式選擇多個引腳,

可選值:

GPIO_PIN_0選擇0引腳

GPIO_PIN_1選擇1引腳

GPIO_PIN_2選擇2引腳

GPIO_PIN_3選擇3引腳

GPIO_PIN_4選擇4引腳

GPIO_PIN_5選擇5引腳

GPIO_PIN_6選擇6引腳

GPIO_PIN_7選擇7引腳

GPIO_PIN_LNIB低四位引腳選擇,即同時選擇PIN_0到PIN_3。

GPIO_PIN_HNIB高四位引腳選擇,即同時選擇PIN_4到PIN_7。

GPIO_PIN_ALL選擇全部引腳,即同時選擇PIN_0到PIN_7。

示例:

把GPIOB的引腳0和引腳3置位。

GPIO_WriteHigh(GPIOB,(GPIO_PIN_0|GPIO_PIN_3));

//---------------------------------------------------------------------------------------

voidGPIO_WriteLow(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefPortPins);

這個函數用來復位指定端口一個或多個引腳的電平,即置相應引腳輸出為低電平,無返回值。

所需条件:

该端口必须配置為输出模式。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

PortPins:

要復位引腳,可以用“或”方式選擇多個引腳,

可選值:

GPIO_PIN_0選擇0引腳

GPIO_PIN_1選擇1引腳

GPIO_PIN_2選擇2引腳

GPIO_PIN_3選擇3引腳

GPIO_PIN_4選擇4引腳

GPIO_PIN_5選擇5引腳

GPIO_PIN_6選擇6引腳

GPIO_PIN_7選擇7引腳

GPIO_PIN_LNIB低四位引腳選擇,即同時選擇PIN_0到PIN_3。

GPIO_PIN_HNIB高四位引腳選擇,即同時選擇PIN_4到PIN_7。

GPIO_PIN_ALL選擇全部引腳,即同時選擇PIN_0到PIN_7。

示例:

把GPIOB的引腳0和引腳3置為低電平。

GPIO_WriteLow(GPIOB,(GPIO_PIN_0|GPIO_PIN_3));

//---------------------------------------------------------------------------------------

voidGPIO_WriteReverse(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefPortPins);

這個函數用來取反指定端口的一個或多個引腳的電平狀態,如果當前該引腳為高電平則置為低電平,如果為低電平則置為高電平,無返回值。

所需条件:

该端口必须配置為输出模式。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

PortPins:

要取反的引腳,可以用“或”方式選擇多個引腳。

可選值:

GPIO_PIN_0選擇0引腳

GPIO_PIN_1選擇1引腳

GPIO_PIN_2選擇2引腳

GPIO_PIN_3選擇3引腳

GPIO_PIN_4選擇4引腳

GPIO_PIN_5選擇5引腳

GPIO_PIN_6選擇6引腳

GPIO_PIN_7選擇7引腳

GPIO_PIN_LNIB低四位引腳選擇,即同時選擇PIN_0到PIN_3。

GPIO_PIN_HNIB高四位引腳選擇,即同時選擇PIN_4到PIN_7。

GPIO_PIN_ALL選擇全部引腳,即同時選擇PIN_0到PIN_7。

示例:

取反GPIOB的引腳0和引腳3的電平狀態。

GPIO_WriteReverse(GPIOB,(GPIO_PIN_0|GPIO_PIN_3));

//---------------------------------------------------------------------------------------

u8GPIO_ReadInputData(GPIO_TypeDef*GPIOx);

這個函數用來讀取指定端口的數據,返回一個八位無符號值。

所需条件:

该端口必须配置為输入模式。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

示例:

讀取端口A的數值。

u8r_data;

r_data=GPIO_ReadInputData(GPIOA);

//---------------------------------------------------------------------------------------

u8GPIO_ReadOutputData(GPIO_TypeDef*GPIOx);

這個函數用來讀取指定端口的輸出寄存器的數據,返回一個八位無符號值。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

示例:

讀取端口A的輸出寄存器的數值。

u8r_data;

r_data=GPIO_ReadOutputData(GPIOA);

//---------------------------------------------------------------------------------------

BitStatusGPIO_ReadInputPin(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefGPIO_Pin);

這個函數用來讀取指定端口一個或多個引腳狀態,任意一個引腳為高電平側返回SET,否則返回RESET。

所需条件:

该端口必须配置為输入模式。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

GPIO_Pin:

要讀取狀態的引腳,可以用“或”方式選擇多個引腳,

可選值:

GPIO_PIN_0選擇0引腳

GPIO_PIN_1選擇1引腳

GPIO_PIN_2選擇2引腳

GPIO_PIN_3選擇3引腳

GPIO_PIN_4選擇4引腳

GPIO_PIN_5選擇5引腳

GPIO_PIN_6選擇6引腳

GPIO_PIN_7選擇7引腳

GPIO_PIN_LNIB低四位引腳選擇,即同時選擇PIN_0到PIN_3。

GPIO_PIN_HNIB高四位引腳選擇,即同時選擇PIN_4到PIN_7。

GPIO_PIN_ALL選擇全部引腳,即同時選擇PIN_0到PIN_7。

示例:

讀取GPIOB引腳1的電平狀態。

GPIO_ReadInputPin(GPIOB,GPIO_PIN_1);

//---------------------------------------------------------------------------------------

voidGPIO_ExternalPullUpConfig(GPIO_TypeDef*GPIOx,GPIO_Pin_TypeDefGPIO_Pin,FunctionalStateNewState);

這個函數用來使能或禁止指定端口某一個或多個引腳的內部上拉電阻,無返回值。

參數:

GPIOx:

端口GPIOA到GPIOI可選。

GPIO_Pin:

要使能或禁止內部上拉電阻的引腳,可以用“或”方式選擇多個引腳,

可選值:

GPIO_PIN_0選擇0引腳

GPIO_PIN_1選擇1引腳

GPIO_PIN_2選擇2引腳

GPIO_PIN_3選擇3引腳

GPIO_PIN_4選擇4引腳

GPIO_PIN_5選擇5引腳

GPIO_PIN_6選擇6引腳

GPIO_PIN_7選擇7引腳

GPIO_PIN_LNIB低四位引腳選擇,即同時選擇PIN_0到PIN_3。

GPIO_PIN_HNIB高四位引腳選擇,即同時選擇PIN_4到PIN_7。

GPIO_PIN_ALL選擇全部引腳,即同時選擇PIN_0到PIN_7。

示例:

禁止和使能端口GPIOB引腳0的上拉電阻。

如果該引腳原為推挽輸出,那么禁止后就變為開漏輸出。

如果該引腳原來上拉輸入,那么禁止后就變為浮動輸入。

如果該引腳原為開漏輸出,那么使能后就變為推挽輸出。

如果該引腳原來浮動輸入,那么使能后就變為上拉輸入。

(1)GPIO_ExternalPullUpConfig(GPIOB,GPIO_PIN_0,DISABLE);//禁止內部上拉電阻。

(2)GPIO_ExternalPullUpConfig(GPIOB,GPIO_PIN_0,ENABLE);//使能內部上拉電阻。

//---------------------------------------------------------------------------------------

分享到:

 

STM8库函数学习笔记之时钟管理

作者:

BH7KQK

日期:

2010.12.31

相关函数:

voidCLK_DeInit(void);

voidCLK_HSECmd(FunctionalStateNewState);

voidCLK_HSICmd(FunctionalStateNewState);

voidCLK_LSICmd(FunctionalStateNewState);

voidCLK_CCOCmd(FunctionalStateNewState);

voidCLK_ClockSwitchCmd(FunctionalStateNewState);

voidCLK_FastHaltWakeUpCmd(FunctionalStateNewState);

voidCLK_SlowActiveHaltWakeUpCmd(FunctionalStateNewState);

voidCLK_PeripheralClockConfig(CLK_Peripheral_TypeDefCLK_Peripheral,FunctionalStateNewState);

ErrorStatusCLK_ClockSwitchConfig(CLK_SwitchMode_TypeDefCLK_SwitchMode,CLK_Source_TypeDefCLK_NewClock,FunctionalState

ITState,CLK_CurrentClockState_TypeDefCLK_CurrentClockState);

voidCLK_HSIPrescalerConfig(CLK_Prescaler_TypeDefHSIPrescaler);

voidCLK_CCOConfig(CLK_Output_TypeDefCLK_CCO);

voidCLK_ITConfig(CLK_IT_TypeDefCLK_IT,FunctionalStateNewState);

voidCLK_SYSCLKConfig(CLK_Prescaler_TypeDefCLK_Prescaler);

voidCLK_SWIMConfig(CLK_SWIMDivider_TypeDefCLK_SWIMDivider);

voidCLK_CANConfig(CLK_CANDivider_TypeDefCLK_CANDivider);

voidCLK_ClockSecuritySystemEnable(void);

voidCLK_SYSCLKEmergencyClear(void);

voidCLK_AdjustHSICalibrationValue(CLK_HSITrimValue_TypeDefCLK_HSICalibrationValue);

u32CLK_GetClockFreq(void);

CLK_Source_TypeDefCLK_GetSYSCLKSource(void);

FlagStatusCLK_GetFlagStatus(CLK_Flag_TypeDefCLK_FLAG);

ITStatusCLK_GetITStatus(CLK_IT_TypeDefCLK_IT);

voidCLK_ClearITPendingBit(CLK_IT_TypeDefCLK_IT);

//-----------------------------------------------------------------------------------------

voidCLK_DeInit(void);

恢复相关的时钟寄存器到默认值

参数:

返回值:

注意:

当要复位CCOR寄存器时,如果CCOEN位被置位,则需要先复位CCOEN位,然后再复位CCOSEL位,复位CCOEN位和复位CCOSEL位的操作必须连续。

这个理解不知对不对,是根据库函数的帮助来理解的,但测试结果,无论CCOEN是否置位,调用后都能恢复CCOR寄存器。

//-----------------------------------------------------------------------------------------

voidCLK_HSECmd(FunctionalStateNewState);

启用或禁用外部高速振荡器(HSE)

参数:

NewState:

新的状态值

DISABLE禁用

ENABLE启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_HSICmd(FunctionalStateNewState);

启用或禁用内部高速振荡器(HSI16MHz)

参数:

NewState:

新的状态值

DISABLE禁用

ENABLE启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_LSICmd(FunctionalStateNewState);

启用或禁用内部低速振荡器(LSI128KHz)

参数:

NewState:

新的状态值

DISABLE禁用

ENABLE启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_CCOCmd(FunctionalStateNewState);

启用或禁用可配置的时钟输出功能

参数:

NewState:

新的状态值

DISABLE禁用

ENABLE启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_ClockSwitchCmd(FunctionalStateNewState);

手动启动或关闭时钟切换

参数:

NewState:

新的状态值

DISABLE禁用

ENABLE启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_FastHaltWakeUpCmd(FunctionalStateNewState);

使能或禁止从停机模式(Halt)或活跃停机模式(ActiveHalt)中快速唤醒。

停机模式(Halt):

CPU和片上设备完全停止工作,定时唤醒单元AWU也停止,仅由外部中断及复位唤醒。

活跃停机模式(ActiveHalt):

保留一个定时唤醒单元AWU工作,CPU和片上设备全停止工作,AWU和外部中断及复位均可唤醒

使能后内部高速振荡器(HSI)会自动打开,且作为主时钟源(fMASTER)(CKM=SWI=HSI),然后从停机模式(Halt)或活跃停机模式(ActiveHalt)中

快速唤醒。

返回值:

//-----------------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1