【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
一、头文件的修改有两处
1. stm32f10x_usart.h 文件中,增加USART_Mode_PCE宏定义。
2. IS_USART_MODE(MODE)的数据范围检查,将0xFFF3修改为0xFBF3。
/** @defgroup USART_Mode
* @{
*/
#define USART_Mode_Rx ((uint16_t)0x0004)
#define USART_Mode_Tx ((uint16_t)0x0008)
#define USART_Mode_PCE ((uint16_t)0x0400)
#define IS_USART_MODE(MODE) ((((MODE) & (uint16_t)0xFBF3) == 0x00) && ((MODE) != (uint16_t)0x00))
/**
* @}
*/
二、串口的配置代码, 初始化后,不再重复设置CR1寄存器,代码中添加串口PCE模式即可,如下所示:
USART_InitStructure.USART_BaudRate = linecoding.bitrate;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; // 库函数缺省设置是奇偶校验输出关闭
/* set the parity bit*/
switch (linecoding.paritytype)
{
case 0:
USART_InitStructure.USART_Parity = USART_Parity_No;
break;
case 1:
USART_InitStructure.USART_Parity = USART_Parity_Odd; // bit : PCE 奇校验输出打开
USART_InitStructure.USART_Mode = USART_InitStructure.USART_Mode | USART_Mode_PCE;
break;
case 2:
USART_InitStructure.USART_Parity = USART_Parity_Even; // bit : PCE 偶校验输出打开
USART_InitStructure.USART_Mode = USART_InitStructure.USART_Mode | USART_Mode_PCE;
break;
case 3:
// Mark 强制为1
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
break;
case 4:
// Space 强制为0
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
break;
default :
{
USART_Config_Default();
return (FALSE);
}
}
目前ST官方的软件团队,在STM32CubeMX的基础上正在增加对F1系列的支持,至今仍无进展消息,
但若还是按照以往推倒重来的方式,例如F4系列的HAL驱动库,完全颠覆了之前的标准外设驱动库,
是不会吸引到广大应用开发者的。虽然目前 STM32CubeMX 4.5版本生成的F1系列初始化代码,
可以拷贝到工程的C源文件中,配合标准外设驱动库使用,但未来新的F1系列HAL驱动,能否兼容
原有的标准外设驱动库,还尚未可知。
F4的库完整的考虑了9位数据发送,校验位的发送等,F1的库还不完善。例如F4的串口数据类型添加了校验位的定义。
#define UART_PARITY_NONE ((uint32_t)0x00000000)
#define UART_PARITY_EVEN ((uint32_t)USART_CR1_PCE)
#define UART_PARITY_ODD ((uint32_t)(USART_CR1_PCE | USART_CR1_PS))
#define IS_UART_PARITY(PARITY) (((PARITY) == UART_PARITY_NONE) || \
((PARITY) == UART_PARITY_EVEN) || \
((PARITY) == UART_PARITY_ODD))
#define __GPIOA_CLK_ENABLE() (RCC->AHB1ENR |= (RCC_AHB1ENR_GPIOAEN))
#define __GPIOB_CLK_ENABLE() (RCC->AHB1ENR |= (RCC_AHB1ENR_GPIOBEN))
#define __GPIOC_CLK_ENABLE() (RCC->AHB1ENR |= (RCC_AHB1ENR_GPIOCEN))
#define __GPIOD_CLK_ENABLE() (RCC->AHB1ENR |= (RCC_AHB1ENR_GPIODEN))
#define __GPIOE_CLK_ENABLE() (RCC->AHB1ENR |= (RCC_AHB1ENR_GPIOEEN))
#define __GPIOH_CLK_ENABLE() (RCC->AHB1ENR |= (RCC_AHB1ENR_GPIOHEN))
这个是里面的更新记录
哦,那应该是官方最新的
3.6.1是这样,但3.6.0就更新比较多了
官网有下载链接没?
没有找到,只有3.5.0.所以我才问大家的
可能还是在调试中