stm32做读卡程序,需要支持7816接口,USART1的TX 怎么设GPIO_Mode_AF_OD模式呢? 以前是这样完成的,在103上,但现在没有定义这个了,只GPIO_Mode_AF /* Configure USART3 Tx (PB.10) as alternate function open-drain */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; GPIO_Init(GPIOB, &GPIO_InitStructure); |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
RE:STM32F03的GPIO_Mode_AF_OD功能
RE:STM32F03的GPIO_Mode_AF_OD功能
功能复用时是使用 GPIO_PinAFConfig函数 进行引脚映射。
/* Connect PXx to USARTx_Tx*/
GPIO_PinAFConfig(COM_TX_PORT[COM], COM_TX_AF_PIN[COM], COM_AF[COM]);
/* Connect PXx to USARTx_Rx*/
GPIO_PinAFConfig(COM_RX_PORT[COM], COM_RX_AF_PIN[COM], COM_AF[COM]);
回复:STM32F03的GPIO_Mode_AF_OD功能
USART_InitTypeDef USART_InitStructure;
RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA, ENABLE); // 使能GPIOB端口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); // 使能串口1时钟
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);
/////////////////////////////////////////////////////////////////////////////////////
/*
* USART1_TX -> PA9 , USART1_RX -> PA10
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/////////////////////////////////////////////////////////////////////////////////////
USART_InitStructure.USART_BaudRate = 9600; //设置串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //设置数据位
USART_InitStructure.USART_StopBits = USART_StopBits_1; //设置停止位
USART_InitStructure.USART_Parity = USART_Parity_No; //设置效验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//设置流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //设置工作模式
USART_Init(USART1, &USART_InitStructure); //串口配置
USART_ITConfig(USART1, USART_IT_RXNE,ENABLE); //打开中断
USART_Cmd(USART1, ENABLE);//使能串口1
给你一个最全的,试试,F0的串口配置代码
RE:STM32F03的GPIO_Mode_AF_OD功能
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //打开GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //打开usart时钟
//GPIO_DeInit(GPIOA);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
/* Configure pins as AF pushpull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//USART_DeInit(USART1);
USART_InitStructure.USART_BaudRate = BaudRate;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //使能接收和发送
USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //使能接收中断
USART_Cmd(USART1, ENABLE);
USART_ClearFlag(USART1, USART_FLAG_TC);
}
这个配置可以用的,
具体可以看https://www.stmcu.org.cn/bbs/article_244_566828.html
RE:STM32F03的GPIO_Mode_AF_OD功能
/* Enable USART3 clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
/* Configure USART3 CK(PB.12) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART3 Tx (PB.10) as alternate function open-drain */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOA, &GPIO_InitStructure);
回复:STM32F03的GPIO_Mode_AF_OD功能
即:10:复用功能推挽输出模式
11:复用功能开漏输出模式
MODE:11:输出模式,最大速度50MHz
GPIO_TypeDef* 定义的寄存器变了,
程序如下:
RCC_APB1PeriphClockCmd(SC_USART_CLK, ENABLE);
/* Configure USART1 CK(PA8) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = SC_USART_PIN_CK; //PA8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(SC_USART_GPIO, &GPIO_InitStructure);
redata[1]=GPIOA->AFR[1];
/* Configure USART1 Tx (PA9) as alternate function open-drain */
GPIO_InitStructure.GPIO_Pin = SC_USART_PIN_TX; //PA9
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //GPIO_Mode_AF_OD
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_Init(SC_USART_GPIO, &GPIO_InitStructure);
//redata[1]=GPIOA->AFR[1];
/* Connect PXx to USARTx_Tx */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_1); //¸´Óù¦ÄÜ
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
但一直没收到数据。
如果有F0的寄存器的说明就好了。
RE:STM32F03的GPIO_Mode_AF_OD功能
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
等于 GPIO_Mode_AF_OD
RE:STM32F03的GPIO_Mode_AF_OD功能
STM32的库升级了,但是寄存器定义是没有变化的,所以只要具体看其实现就可以了。
一个IO有几个复用功能,可以通过寄存器的bit位来确定,只要看老版本的库怎么设置寄存器的,对应在新版本的库中使用此种设置即可