历史上的今天
返回首页

历史上的今天

今天是: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);


推荐阅读

史海拾趣

BOCA公司的发展小趣事

随着国内市场的饱和,BOCA公司开始将目光投向海外市场。公司首先在欧洲和北美设立了分公司,通过本地化运营和营销策略,成功打开了这些市场。随后,BOCA又陆续在亚洲、非洲等地区设立了分支机构,形成了全球化的销售网络。国际化战略的实施不仅为BOCA带来了更广阔的市场空间,也提升了公司的品牌影响力和国际竞争力。

FRIWO公司的发展小趣事

FRIWO公司一直将创新视为企业发展的核心驱动力。公司不断投入研发资金,引进高端人才,致力于新技术、新产品的开发和应用。通过持续的技术创新,FRIWO在电源变换器、电源充电器、开关式电源供应器等领域取得了多项技术突破和专利成果。这些技术成果不仅提升了FRIWO产品的性能和品质,也为客户提供了更加高效、可靠的电源解决方案。

Echelon_Corporation公司的发展小趣事

作为一家技术驱动的公司,Echelon始终注重技术创新和产品研发的投入。公司拥有一支专业的研发团队,致力于开发更加先进、更加可靠的产品和技术。同时,Echelon还积极与全球范围内的科研机构、高校等合作,共同推动技术创新和产业升级。这些努力使得Echelon在电子行业始终保持领先地位。

集创北方(CHIPONE)公司的发展小趣事

凭借在显示芯片领域的卓越表现,集创北方获得了众多行业殊荣。公司曾荣获工信部“制造业单项冠军示范企业”称号、北京市专精特新“小巨人”企业等荣誉。这些荣誉的获得不仅是对集创北方技术实力的认可也是对公司未来发展的期许。

以上五个故事简要概述了集创北方在电子行业发展的历程和成就,展示了公司不断创新、积极进取的精神风貌。

EiKO Global LLC公司的发展小趣事

作为一家致力于环保和可持续发展的企业,EiKO始终关注照明产品对环境的影响。公司积极推广LED等高效、节能、环保的照明产品,并不断优化产品设计和生产过程,降低能耗和排放。

此外,EiKO还积极参与各种环保活动和公益事业,如支持绿色照明项目、参与节能减排宣传等。通过这些举措,EiKO不仅为客户提供了更加优质、环保的照明产品,也为推动整个照明行业的可持续发展做出了积极贡献。

Diplohmatic A/S公司的发展小趣事

Diplohmatic A/S公司最初是一家小型电子元件分销商,但其创始人对技术创新的执着追求引领了公司的转型。在一次偶然的机会中,公司研发团队发现了一种新型半导体材料,这种材料在能效和稳定性上远超市场同类产品。经过数月的研发和测试,公司成功将这种材料应用于新型电源管理芯片中,并迅速获得了市场的认可。这一创新不仅为公司带来了丰厚的利润,也奠定了其在电子行业的技术领先地位。

问答坊 | AI 解惑

【MPS商城钜惠体验季】--MPM3620AGQV-Z

运用这个器件做一下对比实验  如图所系列打个板子验证一下     ga     …

查看全部问答>

Matter Network Transport [Chinese] - Connectivity Standards Alliance

Matter Network Transport [Chinese] - Connectivity Standards Alliance [localvideo]7e95c2f33273b257bdbfb12f3b2eac01[/localvideo]   …

查看全部问答>

matter安全与隐私

matter安全与隐私 [localvideo]875e8e380c1990071619ad560fec2e60[/localvideo]   …

查看全部问答>

【Sipeed 高云GW2A FPGA开发板】——ARM Cortex-M0软核处理器_点亮数码管

ARMSOC-7SEG 该设计实现一个使用ARM Cortex-M0 DesignStart内核的SoC,集成一个7段数码管的驱动IP,对该IP的数据寄存器写入数据后,即可在IO引脚上输出对应的信号,从而在连接的7段数码管上显示对应的数字/字符。 4.5.1.  ...…

查看全部问答>

AD编译时如何让这种未连接的网络报错?

举例说明,如下两张图是在不同的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的 ...…

查看全部问答>

电容滤波的解析与EMC整改建议

一、电容的滤波作用      即频率f越大,电容的阻抗Z越小。  当低频时,电容C由于阻抗Z比较大,有用信号可以顺利通过;  当高频时,电容C由于阻抗Z已经很小了,相当于把高频噪声短路到GND上去了。  ...…

查看全部问答>

STM32G431单片机HAL驱动察除FLASH失败

我的程序是使用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 ...…

查看全部问答>