历史上的今天
返回首页

历史上的今天

今天是:2025年06月01日(星期日)

2018年06月01日 | STM8L101系列单片机串口配置详解(基于IAR自带库)

2018-06-01 来源:eefocus

STM8L101f3p6  有一个串口如图


本历程基于库操作 不讨论具体寄存器操作

有兴趣的同学可以自行参考编程手册

下面看一下手册的了解一下特点



 

本人英语是个小白只可意会不可言传了


内部结构了由于是基于库函数的所以不做寄存器的分析了

库函数的好处就是可以在不了解单片机寄存器的前提下 可以快速开发应用 

下面举个例子 

波特率 9600  8位字长停止位一位 无校验

串口模式为收发模式  查询发送   中断接收

 

在初始化串口之前 应该先初始化 串口对应的IO口  由手册可知串口对应的IO为PC2(USART_RX)和PC3(USART_TX)。

 

首先宏定义下IO 方便理解和配置

#define TXD_GPIO_PORT  GPIOC

#define RXD_GPIO_PORT  GPIOC

 

#define TXD_GPIO_PINS  GPIO_Pin_3

#define RXD_GPIO_PINS  GPIO_Pin_2

 

初始化IO

TxD  配置成输出上拉高速模式

RxD  配置成输入上拉无中断模式

 

GPIO_Init(TXD_GPIO_PORT, TXD_GPIO_PINS, GPIO_Mode_Out_PP_High_Fast);

GPIO_Init(RXD_GPIO_PORT, RXD_GPIO_PINS, GPIO_Mode_In_PU_No_IT);

 

 

接下来打开串口模块时钟(之前就是忘配置这个功能 所以一直不好使)

CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE);

 

配置串口详细的功能

USART_Init((u32)9600, USART_WordLength_8D, USART_StopBits_1,     USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Rx| USART_Mode_Tx));

 

开启接收中断

USART_ITConfig(USART_IT_RXNE, ENABLE); //开启接收中断

打开串口

USART_Cmd(ENABLE);

 

最后在开启总中断就可以啦

enableInterrupts();  /* 开启总中断 */

发个数据

UART_SendString("This is a UART Demo \r\n");


 

哈哈 好使

下面是完整的功能函数

 

 

 

 

 

/*******************************************************************************

 * 名称: Uart_Init

 * 功能: UART2初始化操作

 * 形参: 无

 * 返回: 无

 * 说明: 无

 ******************************************************************************/

void Uart_Init(void)

{

 

   GPIO_Init(TXD_GPIO_PORT,TXD_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);

   GPIO_Init(RXD_GPIO_PORT,RXD_GPIO_PINS, GPIO_Mode_In_PU_No_IT);

  

 // GPIO_ExternalPullUpConfig(GPIOC,GPIO_Pin_3|GPIO_Pin_4, ENABLE);

 

  CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE);

 

   USART_DeInit();   /* 将寄存器的值复位 */

   

    /*

     * 将UART2配置为:

     * 波特率 = 9600

     * 数据位 = 8

     * 1位停止位

     * 无校验位

     * 使能接收和发送

     */

 

 

     USART_Init((u32)9600,USART_WordLength_8D, USART_StopBits_1, \

     USART_Parity_No,(USART_Mode_TypeDef)(USART_Mode_Rx | USART_Mode_Tx));

 

 

     USART_ITConfig(USART_IT_RXNE,ENABLE); //开启接收中断

     USART_Cmd(ENABLE);

enableInterrupts(); /* 开启总中断 */

 

}


推荐阅读

史海拾趣

Electron Products Inc公司的发展小趣事

随着科技的快速发展,EPI意识到只有不断创新才能在竞争激烈的电子行业中立足。因此,公司加大了对研发的投入,并成功推出了一系列具有创新性和领先性的电子产品。这些产品不仅提升了用户体验,还为公司带来了更多的市场份额和利润。

Babcock Inc公司的发展小趣事

随着技术的不断积累,Babcock开始将研发重点转向市场需求旺盛的产品领域。通过深入分析市场趋势和客户需求,公司成功推出了一系列具有创新性和竞争力的电子产品。这些产品不仅性能卓越,而且设计新颖,很快便赢得了市场的广泛认可,为公司带来了可观的收益。

AR RF/Microwave Instrumentation公司的发展小趣事

随着科技的不断发展,AR RF/Microwave Instrumentation意识到要想在激烈的市场竞争中保持领先地位,必须不断进行技术创新。公司投入大量资源进行研发,成功推出了一系列具有创新性的产品,如宽带高功率放大器、固态射频放大器等。这些产品不仅性能卓越,而且能够满足不同客户的需求,进一步巩固了公司在行业内的地位。

ADL [ADL Embedded Solutions Inc]公司的发展小趣事

品质是公司发展的生命线。AR RF/Microwave Instrumentation一直注重品质管理,从原材料采购到生产过程的每一个环节都进行严格把控。同时,公司还建立了完善的售后服务体系,确保客户在使用过程中能够得到及时、专业的支持。此外,公司还不断进行持续改进,通过引入新的生产技术和设备,提高生产效率和产品质量。

Crystalfontz America Inc公司的发展小趣事

为了保证产品质量和客户满意度,Crystalfontz America Inc公司建立了完善的质量管理体系。公司从原材料采购、生产制造到产品出厂等各个环节都严格把控质量,确保产品符合相关标准和客户要求。同时,公司还不断优化生产流程和管理制度,提高生产效率和产品质量稳定性。这些措施为公司赢得了良好的市场声誉和客户口碑。

FIDELIX公司的发展小趣事

在东芯半导体的支持下,FIDELIX开始将其一部分技术团队迁移到国内,加速了存储芯片的国产替代进程。这些技术团队的加入,不仅提升了国内半导体产业的技术水平,也促进了FIDELIX与国内企业的深度融合和协同发展。

问答坊 | AI 解惑

LCD驱动 如何去掉闪烁 arm9 2410

我的是2410的芯片,现在要驱动TX18D16VM1CAA的LCD,可是现在已经把分频值设到最低了还是会抖动,什么原因? 听人说好像是加电压什么的,我设置的是24位的TFT模式,怎么操作啊~ …

查看全部问答>

wince 中 压缩与非压缩dll xip dll 与非xip dll

由于嵌入式系统的特定要求,ce必须比桌面系统更有效的使用和节省物理内存,采用有rom文件系统与ram文件系统。可以在rom中存放压缩的与非压缩的文件,前者中的可执行文件(dll,exe)必须解压到ram才可使用,后者如果在支持线性访问的介质(如nor fl ...…

查看全部问答>

高分请教:ARM(S3C2440)移植boa问题

   以下是我配置boa的过程: 配置boa: #cd /opt/EmbedSky/boa-0.94.13/src #./configure 说明:本来按照该配置脚本的提示是可以直接设置成交叉编译的环境的,不过,经过实际试验后发现 那样是行不通的,无奈只能用这个笨方法了。 ...…

查看全部问答>

嵌入式驱动工程师(月薪)

我是应届毕业生!从大三开始学习嵌入式!都是自己在摸索!参加过嵌入式的竞赛!有项目经验! 个人本身也写过驱动!简单的字符设备驱动,flash的驱动!自己也正在看Linux内核!(情景分析+源代码) 精通C/C++语言!熟悉JAVA(做过项目拿过奖)再者, ...…

查看全部问答>

STM32启动代码---堆而非栈疑问

Heap_Size       EQU     0x00000200                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem  &nb ...…

查看全部问答>

【设计工具】《Xilinx 可编程逻辑器件的高级应用与设计技巧》

  Xilinx公司是全球最大的可编程逻辑器件制造商,也是FPGA器件的发明者,特别是在通信技术领域,Xilinx不仅是一个提供通信器件的供应商,还积极地参与通信标准的制定,提供系统集成和系统解决方案等。为了满足和适应市场的需要,该公司不断地推出高性能 ...…

查看全部问答>

mos管开关电路,有问题,求解

各位大侠,这是一个电机驱动电路,RL是负载电机,我用个200K的电阻代替。PWM信号是单片机输过来的, 频率是10K,现在我调节PWM的占空比,负载端的电压稳定在12V。 如果我把三个电容:C1、C2、EC1都去掉,则负载端的电压是一个随PWM信号变化的方 ...…

查看全部问答>

ADC0809数字电压表显示问题

设计图如下, 由于硬件已经实现,无法更改,还望大神多多帮忙。 源代码如下 //--------------------------------------- // AD0809 by maomaochong // Date: 2011/8/31 // Time: 15:54 // Function: ADDA-ADDC connect to P2.0-P2.2 to cho ...…

查看全部问答>

求助!新手!stm32f407z的摄像头OV9655实验

用的是微雪的STM32F407z的开发板,摄像头是OV9655,用随板的示例程序测试只显示已初始化成功,LCD上并无成像,是怎么回事啊?摄像头,板子和lcd屏都没问题! 我是新手,解答请详细点,在此拜谢各位大神! ps:附主程序 #include \"stm32f4xx.h\" ...…

查看全部问答>

蓝牙气体报警器

蓝牙气体报警器…

查看全部问答>