1.串口
1.串口作为MCU和外界的连接工具,既可以检验代码的正确性,也可以和上位机进行交流
2.在STM32F103RCT6中,最多支持5路串口,对于串口而言,一般使用串行通信(USART1--5)
3.几个比较重要的寄存器:
具体配置过程
1.计算波特率(整数和小数部分)
2.初始化GPIO口
3.复位USART 配置波特率,配置奇偶校验,停止位等
4.配置中断(可编写中断服务函数)
代码实现:
//初始化IO 串口1
//pclk2:PCLK2时钟频率(Mhz)
//bound:波特率
//1.计算波特率(整数和小数)
//2.初始化引脚
//3.复位USART1
//4.设置奇偶校验等
//5.设置中断
void uart_init(u32 pclk2,u32 bound)//USART1使用pclk2 USART2-5使用PCLK1
{
float temp;
u16 mantissa;//整数
u16 fraction;//小数
temp=(float)(pclk2*1000000)/(bound*16);//temp(float)=32.0625 temp=32;
mantissa=temp;//整数部分
fraction=(temp-mantissa)*16;
mantissa<<=4;
mantissa=mantissa+fraction;//以hex的形式 USART->BRR
//设置GPIO口
RCC->APB2ENR|=1<<2;//设置串口时钟
RCC->APB2ENR|=1<<14;//设置串口时钟
GPIOA->CRH&=0XFFFFF00F;//PA9 PA10
GPIOA->CRH|=0X000008B0;//1000 1010 RXD TXD
//复用
RCC->APB2RSTR|=1<<14;
RCC->APB2RSTR&=~(1<<14);
//设置波特率
USART1->BRR=mantissa;
USART1->CR1|=0X200C;//设置停止位和校验位
//中断
#if EN_USART_RX
//使能接收中断
USART1->CR1|=1<<8;//接收使能
USART1->CR1|=1<<5;//接收缓冲区非空中断使能
MY_NVIC_Init(3,3,USART1_IRQn,2);
#endif
}
关键字:STM32 串口 基本配置
引用地址:
STM32 串口的基本配置(寄存器版)笔记
推荐阅读最新更新时间:2024-03-16 16:20
STM32+IAR+uC/OS环境下怎样写中断程序
先说说,几个关键函数: bsp_int.c提供几个关键的中断操作函数: void BSP_IntDis (CPU_DATA int_id) //关闭指定中断 void BSP_IntDisAll (void) //关闭所有中断 void BSP_IntEn (CPU_DATA int_id) //使能指定中断 void BSP_IntVectSet (CPU_DATA int_id, CPU_FNCT_VO
[单片机]
ucosii在stm32上的移植详解3
移植详解1和2中主要讲了移植需要用到的基础知识,本文则对具体的移植过程进行介绍。 首先从micrium网站上下载官方移植版本(编译器使用ARM/Keil的,V2.86版本,V2.85有问题)。 下载地址: http://micrium.com/page/downloads/ports/st/stm32 解压缩后得到如下文件夹和文件: Micrium\ AppNotes Licensing Software ReadMe.pdf AppNotes包含ucosii移植说明文件。这两个文件中我们仅需关心Micrium\AppNotes\AN1xxx-RTOS\AN1018-uCO
[单片机]
STM32之系统时钟基定时器
STM32F10x内核中都具有一个系统时钟基定时器,是一个24位的递减计数器。在其设置处置并使能后,每经过一个系统时钟周期,计数值减1.档计数值减到0时系统时基定时器又会自动重载初值。 系统时基定时器每10ms就会产生一次中断。 接下来主要介绍库函数。 1.SysTick_CLKSourceConfig函数的功能是设置SysClock的时钟源。其中输入参数为SysTick_CLKSource:SysTick时钟源 参数可取的值为:SysTick_CLKSource_HCLK_Div8;SysTick_CLKSource_HCLK.表示SysTick时钟源为AHB时钟除以8和AHB时钟源。 例:设置系统定时器时钟为AHB时钟。 Sy
[单片机]
STM32定时器的分类及中断原理
本文主要介绍常规定时器中的TIM3,实现定时器中断的功能。STM32定时器的分类在其中一篇文章中已经介绍过,本文主要内容主要介绍定时器的基础功能-定时器中断,对于STM32定时器分类简单复习一下。 一、STM32定时器的分类 1.1 按照内核、外核、特定、常规分为4大类: 1)内核定时器:Systick 2)外设定时器:特定应用定时器+常规定时器 3)特定应用定时器:LPTIM,RTC,WTD,HRTIM 4)常规定时器:基本定时器TIM6&TIM7)、通用定时器(TIM2TIM5,TIM9TIM14)、高级定时器(TIM1&TIM8) 1.2 CPU时序 此处我们提一下学习单片机原理的课程时,提到的几个CPU时序。
[单片机]
MSP430G2553测试程序(串口程序,USCI模式)
//****************************************************************************** // HW UART(J4)!!!!!! 特别注意,板子上J4有2个跳线要竖放,设为HW UART模式 // MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK // // Description: Echo a received character, RX ISR used. Normal mode is LPM0. // USCI_A0 RX interrupt triggers TX Echo.
[单片机]
STM32存储器 — 关于STM32的存储器
当我们在完成某一个实验,当我们正庆幸的时候,我们不由得产生一种不安的想法——我们是否已经少许明白其中的种种细节? 尤其,当我们所有的事情都依赖于编译环境或Firmware,抑或他人的程序,而自己仅仅是Copy和Modify,以致Using。当你还是一个初学者的时候,或许不会太过于关注于此,但是要想提高自己对单片机、处理器原理的理解,并且希望走得更远的时候,您就需要关注更为详细的内部知识,您需要明白编译环境、Firmware等为你的默默贡献。 1 STM32系统结构 要想深刻理解STM32的存储器,需要首先知道STM32的系统结构。 如Figure 1,是STM32系统结构框图。 根据STM32 Referenc
[单片机]
STM32_RTC晶振不起振的原因及解决方法
STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了。。。很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了” 更有阴谋论者提出让人啼笑皆非的解释——STM32的RTC晶振不起振是ST与晶振厂商串通后故意搞出来的,目的是提高某晶振厂商高端晶振的销量。。。 最近做的几块板子也用到了STM32的RTC,前后两版一共做了大概6片,幸运的是并未遇到晶振不起振的现象。而我采用的是3毛钱一个的普通晶振,并未选用传说中低负载高精度晶振。。。后来在另外一片实验性质的板子上首次遇到了晶振不起振的问题,而且做了2片都不起振,这才让我意识到这个问题的严重性。
[单片机]
stm32单步调试,出现*** error 65: access violation at 0x40023
问题解决如题: 在单步调试的时候,总是在systeminit()中运行,全速执行不起作用,出现调试错误信息如下 *** error 65: access violation at 0x40023800 : no 'read' permission 该问题的引起的原因是在MDK的设置问题上,Debug选项卡处:use simulator 和 use ,这两种是二选一,我们在use 这项前面打钩,问题就解决了
[单片机]