导航:首页 > 操作系统 > stm单片机端口设置

stm单片机端口设置

发布时间:2022-11-01 13:55:05

① stm32怎么设置端口

最佳答案GPIOC-.CRH&=0XFFF00FFF;//清掉这2个位原来的设置,同时也不影响其它位的设置 GPIOC-CRH|=0X00038000;//PC11输入,PC12输出 ; 就是按位与和按位或,...

② STM32如何重置PWM端口

最简单的方法,检测到按键按下之后,初始化PWM的定时器,输出PWM;检测到按键松开后,反初始化PWM定时器,设置PWM的IO输出0.

voidPwmStart(void)
{
TIM3_GPIO_Config();
TIM3_Mode_Config(200);//占空比0.4设置了TIM3_Mode_Config(inti)
/*开启TIM3*/
TIM_Cmd(TIM3,ENABLE);
}

voidPwmStop(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
TIM_Cmd(TIM3,DISABLE);
TIM_DeInit(TIM3);
//GPIO配置,把PWM的IO配置为输出,然后输出0.
GPIO_InitStructure.GPIO_Pin=PWM_PIN;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOx,&GPIO_InitStructure);
GPIO_ResetBit(GPIOx,PWM_PIN);
}

intmain(void)
{
intnKeyState=-1;
...

while(1)
{
KEY=ReadKeyDown();
if(nKeyState!=KEY)
{
nKeyState=KEY;
if(KEY==1)
{
PwmStart();
}
else
{
PwmStop();
}
}
}
}

③ STM32H750 U盘端口设置

此开发板基于STM32STM32H750VBT6核心,可用于H7系列微处理器的评估、学习和开发等用途,板载ST-Link V2.1,调试、串口、U盘式下载三合一。


a. 板载资源明细


④ stm32串口5怎么配置

STM32串口配置的一般步骤(库函数)
(1)串口时钟使能:RCC_APBxPeriphClockCmd();
GPIO时钟使能:RCC_AHBxPeriphClockCmd();
(2)引脚复用映射:GPIO_PinAFConfig();
(3)GPIO端口模式配置:GPIO_Init(); 模式配置为GPIO_Mode_AF
(4)串口参数初始化:USART_Init();
(5)开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
NVIC_Init();
USART_ITConfig();
(6)使能串口:USART_Cmd();
(7)编写中断处理函数:USARTx_IRQHandler();
(8)串口数据收发:
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接收数据,从DR读取接收的数据
(9)串口传输状态获取:
FlagStatus USART_GetFlagStatus();
void USART_ClearITPendingBit();更加详细的可以在闯客网技术论坛进行查看的。

范例代码:

#include"stm32f4xx.h"
#include"usart.h"

/*中断服务函数*/
voidUSART1_IRQHandler(void)
{
uint16_trecv;

if(USART_GetFlagStatus(USART1,USART_IT_RXNE))
{
recv=USART_ReceiveData(USART1);
USART_SendData(USART1,recv);
}
}


voidUsart1_Demo_Init(void)
{
GPIO_InitTypeDefGPIOA_InitStruct;
USART_InitTypeDefUSART1_InitStruct;
NVIC_InitTypeDefNVIC_InitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);/*使能USART1时钟*/
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);/*使能GPIOA的时钟*/

/*将PA9和PA10映射到串口1*/
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);

/*设置GPIO端口模式*/
GPIOA_InitStruct.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;
GPIOA_InitStruct.GPIO_Mode=GPIO_Mode_AF;
GPIOA_InitStruct.GPIO_OType=GPIO_OType_PP;
GPIOA_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
GPIOA_InitStruct.GPIO_Speed=GPIO_Speed_100MHz;
GPIO_Init(GPIOA,&GPIOA_InitStruct);

/*串口参数初始化*/
USART1_InitStruct.USART_BaudRate=115200;
USART1_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART1_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART1_InitStruct.USART_Parity=USART_Parity_No;
USART1_InitStruct.USART_StopBits=USART_StopBits_1;
USART1_InitStruct.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART1_InitStruct);

/*使能USART1*/
USART_Cmd(USART1,ENABLE);

/*使能串口使用的中断*/
NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStruct);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
}

intmain(void)
{
/*设置中断分组*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Usart1_Demo_Init();

while(1);
}

⑤ 关于stm32端口的输入输出模式配置的问题

你看看你读出来的数据是有规律的还是每次都不一样,或者是不是前一次写入的数据。

一般都是需要,切换GPIO的方向的。我记得stm32的io口有复用推挽输出。

⑥ 如何使用stm32的spi3端口

voidSPI3_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
SPI_InitTypeDefSPI_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
//SPI_FLASH_SPIpins:SCK--PB3
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);

//SPI_FLASH_SPIpins:MISO--PB4
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_Init(GPIOB,&GPIO_InitStructure);

//SPI_FLASH_SPIpins:MOSI--PB5
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_Init(GPIOB,&GPIO_InitStructure);

//SPI_FLASH_SPI_CS_PINpin:CS--PA15
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);

SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
SPI_InitStructure.SPI_Mode=SPI_Mode_Master; //设置SPI工作模式:设置为主SPI
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b; //设置SPI的数据大小:SPI发送接收8位帧结构
SPI_InitStructure.SPI_CPOL=SPI_CPOL_High; //选择了串行时钟的稳态:时钟悬空高
SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge; //数据捕获于第二个时钟沿
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft; //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_16; //定义波特率预分频的值:波特率预分频值为16
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB; //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
SPI_InitStructure.SPI_CRCPolynomial=7; //CRC值计算的多项式
SPI_Init(SPI3,&SPI_InitStructure);//根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器

SPI_Cmd(SPI3,ENABLE);//使能SPI外设

}

⑦ STM8S103单片机PD4口,无论设为‘0’还是‘1’,都是输出为‘1’,急求助!

端口初始化:
PD_DDR = 0XFF; //输出模式
PD_CR1 = 0XFF; //上拉
PD_CR2 = 0X00;

然后输出高电平操作:PD_ODR = 0XFF;
输出低电平操作:PD_ODR = 0X00;

这样操作如还是高不低,则排除硬件原因之后就是芯片的问题了。

阅读全文

与stm单片机端口设置相关的资料

热点内容
编译压缩 浏览:648
工厂程序员翻车 浏览:31
郑州程序员一个月工资 浏览:660
证券公司招聘程序员 浏览:879
java高级编程jdk7 浏览:442
java加密狗 浏览:951
lisp编程工具 浏览:643
加密货币软钱包排行 浏览:833
exe文件反编译源码工具下载 浏览:40
python6bit灰度图 浏览:736
如何用java编译东西 浏览:825
php多语言包管理方案 浏览:254
python程序运行时间自动控制 浏览:385
java编译主函数快捷键 浏览:787
atom编辑器python 浏览:182
安卓优学派如何恢复出厂设置 浏览:730
程序员女巫 浏览:784
冷冻冷藏压缩机 浏览:854
吉利红包H5编译教程 浏览:635
ftpsocket编程 浏览:692