串口简单的操作

接着上篇的文章继续写。

既然学会了中断,小灯,和按键,就会知道与51单片机相比就会知道,缺少了一个数码管,哈哈。

算了,不扯了,来继续学习

首先看下串口

在学习51单片机的时候注意到串口就是设置几个参数:字长(一次传送数据的长度,),波特率(每秒传送的数据位数,校验位。)

首先可以看看波特率的配置与产生

只有USART1使用Fpclk2(最高72MHz)。其它USART使用Fpclk1(最高36MHz)。

Tx / Rx 波特率 =Fpclkx/(16*USARTDIV).

而对于USARTDIV是写入USART_BRR的数据,分为DIV_Mantissa(整数部分),DIV_Fraction(小数部分),就会有USARTDIV=DIV_Mantissa+DIV_Fraction/16

对于串口我们知道对应的会有GPIO口的使用,即需要进行GPIO口的初始化,

由此可以看到我们所用到的就是PA9和PA10.

所以我就以USART1作为例子

首先可以看到我们开启了串口和GPIO口的时钟。

然后配置端口,对PA9设置为强推挽输出然后设置引脚速率为50HZ

对PA10就是设置为浮空输入,

这样就设置好需要的GPIO了,

然后就是对串口的设置了。

首先来看看这个关于串口的结构体。

可以看到32每个功能和外设都会在固件库中找到自己的结构体,这样就方便了大家的操作。

好了,回到demo

这是配置了串口的一些基本参数,这里就不一一说明了。注意一个就是XXX_Cmd ()这个函数,就是使能和关闭外设。

这个就使用Printf( )把想打印的信息打印到串口上。具体怎样实现的,我也没看看,

还有就是可使用串口中断实现一些功能,这就是32 使用的方便,可以使用库来进行方便的编译。

好了 ,这就是串口的实现,

下篇在进行DMA的学习。

时间: 2025-01-11 00:31:32

串口简单的操作的相关文章

使用jxl操作之一: 实现对Excel简单读写操作

项目目录树 对象类UserObject UserObject.java package com.dlab.jxl; public class UserObject { private String userName; private String age; private String address; public String getUserName() { return userName; } public void setUserName(String userName) { this.

android 简单文件操作

1.布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orient

Java 实现Excel的简单读取操作

JAVA实现Excel表单的简单读取操作 实现Excel表单的简单读取操作,首先要导入相关的jar包: 如图所示: 此处贴上代码: public static List<List<String>> readExcel(String path){ List<List<String>> list=new ArrayList<List<String>>(); try { Workbook wb; InputStream is=null; t

SequoiaDB 系列之二 :SequoiaDB的简单CRUD操作

上一篇通过一系列的操作,终于把SequoiaDB的集群部署到单台机器上了. 建议去安装体验一下吧. 在整个环境的部署的体验来看,并没有MongoDB的部署简单,但是比MongoDB的部署要清晰.MongoDB启动进程,后面跟着一大串配置,有点云里雾里的感觉,这个对初学者不太友好.而SequoiaDB的部署,着眼整个集群环境,能在脑中轻松构建一副设计图,协调节点的服务端口是11810,catalog节点的服务端口是11820,11830,11840,而数据节点的服务端口是11850,11860,1

mysql模块简单实用操作-----nodejs

1 //mysql模块简单实用操作 2 3 var mysql = require('mysql'); 4 5 mc = {}; 6 7 8 var dbconfig = { 9 host : 'xxxxxxxxxx', 10 user : 'xxx', 11 password : 'xxx', 12 database : 'xxxxx' 13 }; 14 15 16 17 mc.sqlExc = function (sql, next) { 18 var db = mysql.createCo

下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作

下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->where(['name' => '小伙儿'])->one(); 此方法返回 ['name' => '小伙儿'] 的一条数据: User::find()->where(['name' => '小伙儿'])->all(

多线程中简单的++操作,所引发的思考

一句简单的g_nLoginCount++操作,转换成汇编语言就成了上面的三句话,假如现在我们有两个线程,当第一个线程执行到第二个汇编时,此时第二个线程启动,他又从内存中读取g_nLoginCount,但这时第一个线程已经将g_nLoginCount做了加法操作,只是没有将其移回内存,这样的话这个加法操作形同虚设,这样计算的结果是不可预知的!!!! 多线程中简单的++操作,所引发的思考

关于SQLServer的一些简单代码操作

就不介绍了在studio中的图形化操作了,这里简单介绍了一些SQL语言的操作. 首先: 给一些例子怎样创建一个数据库对象和表(创建create  删除drop): 1.创建数据库对象 1 --创建数据库对象 2 create database School; 3 4 --删除数据库 5 drop database School 6 7 --创建数据库 的时候制定一些参数 8 9 create database School 10 on primary 11 ( 12 --数据库的逻辑名称 13

自定义遮盖层,帮你完成简单的操作引

自定义遮盖层,帮你完成简单的操作引导 版权声明:本文为博主原创文章,允许转载,但请保留出处. 转载请注明出处:王亟亟的大牛之路 最近忙的起飞,本来想周末写的东西结果拖到了今天,不过没事.下午抽出点时间把工作做了下,开源给大家. 话不多说,先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android(各个模块已经基本拆出来了,还剩下动画/自定义控件/疑难杂症/资料部分) 先看下实现的效果 来看下项目目录(很少就一个实现类,一个工具类) 简