好文档 - 专业文书写作范文服务资料分享网站

MINI-STM32 开发板入门教程.

天下 分享 时间: 加入收藏 我要投稿 点赞

STM32共有5种时钟源,其中三种不同的时钟源可用作为驱动系统时钟(SYSCLK); 1、HSI 由内部8MHz RC振荡器产生,它是可以直接用来作为系统时钟或经2分频后作为PLLSRC输入。

HIS时钟频率在出厂时被校准在1%(25°C),在系统复位时,工厂校准值会被装载到时钟控制寄存器的HISCAL[7..0] 位。

用户可以通过更改HISCAL[4..0]来调整HSI频率。

另外时钟寄存器中有一个HSIRDY位用来指示HSI RC是不稳定工作,在时钟启过后,直到这个标志位置被硬件置1后,HSI RC时钟才被输出。

HSI RC时钟还可以用时钟寄存器中的HSION位来启动和关闭。

HSI时钟同时也是HSE晶体荡振器的备用时钟源。

使用HSE时钟,程序设置时钟参数流程:

1、将RCC寄存器重新设置为默认值 RCC_DeInit;

2、打开外部高速时钟晶振HSE RCC_HSEConfig(RCC_HSE_ON);

3、等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp(); 4、设置AHB时钟 RCC_HCLKConfig; 5、设置高速AHB时钟 RCC_PCLK2Config; 6、设置低速速AHB时钟 RCC_PCLK1Config; 7、设置PLL RCC_PLLConfig; 8、打开PLL RCC_PLLCmd(ENABLE);

9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) 10、设置系统时钟 RCC_SYSCLKConfig;

11、判断是否PLL是系统时钟 while(RCC_GetSYSCLKSource() != 0x08) 12、打开要使用的外设时钟 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

具体设置请参考下面的文章

STM32时钟系统与软件配置

STM32的时钟系统分析

STM32 的时钟与RTC

(3) 设置外部中断, 所有的 GPIO 口都可以作为外部中断源. 具体可以参考下面这篇文章.

STM32中外部中断与外部事件

/* Connect EXTI Line3 to PA.3 */

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource3);

/* Configure EXTI Line3 to generate an interrupt on falling edge */ EXTI_InitStructure.EXTI_Line = EXTI_Line3;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);

同样不要忘记打开时钟, 我们在打开 PA 口的时候已经加上了 RCC_APB2Periph_AFIO, 这里再提醒大家一下.

/* Enable GPIOA and AFIO clocks */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |

RCC_APB2Periph_AFIO, ENABLE);

最后就是编写外部中断入口函数. void EXTI3_IRQHandler(void) {

int i;

if(EXTI_GetITStatus(EXTI_Line9) != RESET) {

GPIO_SetBits(GPIOA,GPIO_Pin_0); GPIO_SetBits(GPIOA,GPIO_Pin_1);

for(i=0;i<=8000000;i++);

GPIO_ResetBits(GPIOA,GPIO_Pin_0); GPIO_ResetBits(GPIOA,GPIO_Pin_1);

for(i=0;i<=1000000;i++)

/* Clear the EXTI line 3 pending bit */ EXTI_ClearITPendingBit(EXTI_Line3); } }

不要忘记在中断函数处理完成后清掉标志位,不然会不停的进入中断.

(4) 编译与调试

我们已经完成所有程序编写部份, 接下来就是将工程编译成功后下载到我们的 Mini-STM32 开发板中进行调试和仿真.

如果看到 LED 有规律的点亮和熄灭, 按下按钮后 LED 先是一起熄灭, 在一起点亮, 然后恢复有规律的点亮这个过程, 说明我们已经达到我们的设计目标.

--------------------------------------------------------------------------

总结: 我们学习完了这篇教程之后, 相信大家对下面几个方面的内容已经掌握了. * GPIO 的设置 * STM32 GPIO 的优势 * STM32 的时钟结构 * 外部中断的配置

* 外部中断和外部事件的区别

MINI-STM32 开发板入门教程 (五) 异步串口双工通讯

(一) STM32 的 USART 模拟介绍

通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准NR 异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。

它支持同步单向通信和半双工单线通信。它也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。用于多缓冲器配置的DMA方式,可以实现高速数据通信。

主要特性:

全双工的,异步通信

NR 标准格式

分数波特率发生器系统

-发送和接收共用的可编程波特率,最高到4.5Mbits/s 可编程数据字长度(8位或9位) 可配置的停止位 -支持1或2个停止位

LIN主发送同步断开符的能力以及LIN从检测断开符的能力

- 当USART硬件配置成LIN时,生成13位断开符;检测10/11位断开符 发送方为同步传输提供时钟 IRDA SIR 编码器解码器

- 在正常模式下支持3/16位的持续时间 智能卡模拟功能

- 智能卡接口支持ISO7816 -3标准里定义的异步协议智能卡 - 智能卡用到的0.5和1.5个停止位 单线半双工通信

使用DMA的可配置的多缓冲器通信

- 在保留的SRAM里利用集中式DMA缓冲接收/发送字节 单独的发送器和接收器使能位 检测标志

- 接收缓冲器满 - 发送缓冲器空 - 传输结束标志 校验控制 - 发送校验位 - 对接收数据进行校验 四个错误检测标志 - 溢出错误 - 噪音错误 - 帧错误 - 校验错误 10个带标志的中断源 - CTS改变 - LIN断开符检测 - 发送数据寄存器 - 发送完成 - 接收数据寄存器 - 检测到总线为空

- 溢出错误 - 帧错误 - 噪音错误 - 校验错误

多处理器通信 - - 如果地址不匹配,则进入静默模式 从静默模式中唤醒(通过空闲总线检测或地址标志检测) 两种唤醒接收器的方式 - 地址位(MSB) - 空闲总线

(二) 程序编写

(1) 在 RCC_Configuration 函数中, 打开串口时钟 /* Enable USART1, GPIOA, GPIOx and AFIO clocks */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOx

| RCC_APB2Periph_AFIO, ENABLE);

(2) 设置串口的 RTX, TDX IO 口的属性 void GPIO_Configuration(void) {

GPIO_InitTypeDef GPIO_InitStructure;

/* Configure USART1 Rx (PA.10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Configure USART1 Tx (PA.09) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); }

MINI-STM32 开发板入门教程.

STM32共有5种时钟源,其中三种不同的时钟源可用作为驱动系统时钟(SYSCLK);1、HSI由内部8MHzRC振荡器产生,它是可以直接用来作为系统时钟或经2分频后作为PLLSRC输入。HIS时钟频率在出厂时被校准在1%(25°C),在系统复位时,工厂校准值会被装载到时钟控制寄存器的HISCAL[7..0]位。用户可以通过更改HISCA
推荐度:
点击下载文档文档为doc格式
0gfr65e78o5o77k30e8m0fvqu4yw2700pdv
领取福利

微信扫码领取福利

微信扫码分享