历史上的今天
今天是:2024年12月28日(星期六)
2018年12月28日 | stm32中一些常用基本库函数以及串口配置步骤
2018-12-28 来源:eefocus
常用基本库函数:
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)//使能端口时钟
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)//初始化端口,选择端口号,设定参数
typedef struct
{
uint16_t GPIO_Pin; //引脚号
GPIOSpeed_TypeDef GPIO_Speed; //速度
GPIOMode_TypeDef GPIO_Mode; //输出模式
}GPIO_InitTypeDef;
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)//设置端口中某引脚高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)//设置端口中某引脚低电平
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)//读取输入电平
串口配置的一般步骤:
//需要分别设置传输和接收端口
//①时钟使能
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
//②串口复位
void USART_DeInit(USART_TypeDef* USARTx);
//③端口模式设置
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
//USARTx_TX模式设置为复用推挽GPIO Mode_AF_PP;USARTx_RX模式设置为浮空或上拉输入GPIO Mode_IN_FLOATING;
//④串口参数初始化
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
//⑤开启中断并初始化NVIC
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
typedef struct
{
uint8_t NVIC_IRQChannel; //IRQ通道
uint8_t NVIC_IRQChannelPreemptionPriority; //抢占优先级
uint8_t NVIC_IRQChannelSubPriority; //子优先级
FunctionalState NVIC_IRQChannelCmd; //通道使能
} NVIC_InitTypeDef;
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);
//⑥使能串口
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
//⑦编写中断处理函数
USARTx_IRQHandler();
//⑧串口数据收发
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
typedef struct
{
uint32_t USART_BaudRate; //波特率
uint16_t USART_WordLength; //字长
uint16_t USART_StopBits; //停止位
uint16_t USART_Parity; //奇偶校验
uint16_t USART_Mode; //发送/接收使能
uint16_t USART_HardwareFlowControl; //硬件流控制
} USART_InitTypeDef;
//⑨串口状态获取
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
史海拾趣
|
Matter Network Transport [Chinese] - Connectivity Standards Alliance Matter Network Transport [Chinese] - Connectivity Standards Alliance [localvideo]7e95c2f33273b257bdbfb12f3b2eac01[/localvideo] … 查看全部问答> |
|
【Sipeed 高云GW2A FPGA开发板】——ARM Cortex-M0软核处理器_点亮数码管 ARMSOC-7SEG 该设计实现一个使用ARM Cortex-M0 DesignStart内核的SoC,集成一个7段数码管的驱动IP,对该IP的数据寄存器写入数据后,即可在IO引脚上输出对应的信号,从而在连接的7段数码管上显示对应的数字/字符。 4.5.1. ...… 查看全部问答> |
|
举例说明,如下两张图是在不同的sheet,正确的网络名是“TEST”,但是另外一页误写成了"TESTT",于是乎就失去电气连接了。但在编译原理图时,这种错误并不会报出来,请问有没有什么办法能规避这个错误,编译时让其报错呢? 试过换 ...… 查看全部问答> |
|
【Sipeed 高云GW2A FPGA开发板】——ARM Cortex-M0软核处理器_按键中断 4.6. ARMSOC-INTERRUPT_中断 此设计在前一个设计ARMSOC-7SEG的基础上,添加一个Push button按键到ARM Cortex-M0 DesignStart内核的IRQ信号。 4.6.1. FPGA硬件设计 由于该项目主要基于前一个ARMSOC-7SEG, ...… 查看全部问答> |
|
FNIRSI-1013D是FNIRSI推出的一款功能全面,针对于维修行业和研发行业人群的高性价比双通道平板示波器,虽然它已经对外售卖一段时间了,但我还是决定购买一个示波器,拆解一下,并在硬件的角度向大家介绍一下这款示波器。 从FNIRSI的 ...… 查看全部问答> |
|
一、电容的滤波作用 即频率f越大,电容的阻抗Z越小。 当低频时,电容C由于阻抗Z比较大,有用信号可以顺利通过; 当高频时,电容C由于阻抗Z已经很小了,相当于把高频噪声短路到GND上去了。 ...… 查看全部问答> |
|
我的程序是使用STM32G431的HAL驱动写FLASH扇区,但是总是失败。 int save_config_params(CONFIG_PARAMS *params) { uint32_t PAGEError; uint32_t addr; int i; FLASH_EraseInitTypeDef EraseInitStruc ...… 查看全部问答> |
|
__PICC__ #警告TODO:更新cgpic和这个文件,以使用其他原型 仿真过程中,IO口插拔,电平变化本应进入中断但却转入下方错误,不断在此处循环。到底是因为什么原因导致,要怎么去解决。 unsigned long int #ifdef __PICC__ #warning TODO: update cgpic and this file to use the other prototype __lldi ...… 查看全部问答> |




