查看相关stm32 uart 寄存器器,思考怎么配置uart时钟信号

实验三 ARM 汇编实现串口通信实验 1.掌握 ARM 的串行口工作原理。 2.学习编程实现 ARM 和 PC 机的 UART 通信。 3.掌握 ARM 裸机下汇编语言编程方法。1.学习串行通信原理,了解串行通信控制寄存器。 2.编程实现 ARM 和计算机之间的串行通信。1、ARM 汇编基础 2、ARM 处理器通用 IO 口的操作? 硬件:ARM 嵌入式开发平台,PC 机一台,并口线,串口线,JTAG 板 ? 软件:RVDS,H-JTAG1.异步串行 I/O 异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各 不同位可以分时使用同一传输通道,因此串行 I/O 可以减少信号连线,最少用一对线(输 入,输出)即可进行。2.串口通信流程 串口通信就是读写寄存器的操作,通过配置相关寄存器,查询寄存器就可以操作串口通信。 需要配置的寄存器有系统时钟,UART 行控制寄存器,UART 控制寄存器,UART FIFO 控 制寄 存器,UART MODEM 控制寄存器,UART 波特率控制寄存器;需要查询的寄存器是发送/ 接收状 态寄存器。1. 打开 CodeWarrior for RVDS,建立一个工程,通过查 S3C2440 处理器手册的 UART 通信 寄存器,serialcommutication.s 文件中添加代码实现串口通信传输 2. 设置工程配置选项,Language Setting-&Realview Assembler 和 Realview Compiler 中的 Architecture 设置为 ARM920T, 配置 RVDS 下的连接器 Linker-&Realview Linker 中的 RO Base 为 0x. 编译和调试工程。 4. 连接 PC 和实验板的并口,串口;并口连接至 ARM 的 JTAG 口,串口连接至 COM PORT 口;打开电源;打开 H-JTAG 程序(。 5. 点击调试器 Dubeg-&Run,运行程序,打开超级终端,在开始-&程序-&附件-&通讯里打开 超级终端,使用 COM1,设置波特率
位数据位,无奇偶校验,1 位停止位,无数 据流控制。 6. 从键盘输入数据,观察超级终端是否打印出字符。如有正确的字符打印,则通信成功。实验程序: ;************** SerialCommunication Experiment*****************;相关寄存器地址定义 CLKDIVN EQU 0x4C000014 CAMDIVN EQU 0x4C000018 ULCON0 EQU 0x UCON0 EQU 0x UFCON0 EQU 0x UMCON0 EQU 0x5000000C UBRDIV0 EQU 0x UTRSTAT0 EQU 0x UTXH0 EQU 0x URXH0 EQU 0x MPLLCON EQU 0x4C000004 GPHCON EQU 0x GPHUP EQU 0x ;CLKDIVN for PCLK and FCLK ;CANDIVN ;UART line control register 0 ;UART control register 0 ;UART FIFO control register 0 ;UART modem control register 0 ;UART baud rate divisor register 0 ;UART TX/RX status register 0 ;UART transmit buffer register 0 ;UART receive buffer register 0 ;MPLLGPIO ;GPIO F control register F pull-up register AREA SerialCommunication,CODE,READONLYENTRYldr r2,=MPLLCON ;设置 MPLL 为 0x s 次方)), Fin=16.9344MHzFCLK=Mpll=(2*m*Fin)/(p*(2 的; m=(MDIV+8), p=(PDIV+2), s=SDIV mov r3,#0x22 mov r4,#0x ADD r3,r3,r4 str r3,[r2]ldr r2,=CLKDIVN mov r3,#0x03 str r3,[r2]; CLKDIVN 设置为 0x03, PCLK=FCLK/4ldr r2,=CAMDIVN ; CLKDIVN 设置为 0x0200, PCLK=FCLK/4 mov r3,#0x200 str r3,[r2] ldr r2,=ULCON0 个数据位 mov r3,#0x03 str r3,[r2]; ULCON0 设置为 0x03, 含义是正常操作模式,无校验,停止位 1,8ldr r2,=UCON0 mov r3,#0x05 str r3,[r2];UCON0 设置为 0x05 表示发送、接收数据都使用查询方式ldr r2,=UFCON0 mov r3,#0x00 str r3,[r2];UFCON0 设置为 0x00 为不使用 FIFOldr r2,=UMCON0 mov r3,#0x00 str r3,[r2];UMCON0 设置为 0x00 为不使用流控ldr r2,=UBRDIV0 ;UBRDIV0 设置为 36,含义为 波特率设为 115200, 由下面公式算 得:UBRDIVn = (int)(PCLK/bps*16)-1 ;其中 PCLK =66.68MHz mov r3,#36 strh r3,[r2] ldr r2,=GPHCON ldr r3,=0xa0 str r3,[r2];UART0 set to rxd and txdldr r2,=GPHUP ldr r3,=0x0f str r3,[r2];pull up;-------------填写代码实现串口传输-------------C_UTRSTAT00 ldr r2,=UTRSTAT0 ldr r3,[r2] add r3,r3,#1 CMP r3,#0 beq C_UTRSTAT00C_UTRSTAT01 ldr r2,=UTRSTAT0 ldr r3,[r2] add r3,r3,#2 cmp r3,#0 beq C_UTRSTAT01ldr r2,=UTXH0 ldr r3,=URXH0 ldr r4,[r3] str r4,[r2] B C_UTRSTAT00END1. 查看相关寄存器,思考怎么配置 UART 时钟信号和 UART 配置寄存器? 答:设置 mellcon 寄存器的值可以设置时钟,改变 ulcon 的值可以配置 UART 配置寄存 器。 2. 修改串口传输函数,使其在超级终端中输入“Enter”回车键后,输出“回车”加“换行” 。 ( “回车”和“换行”对应的 ASCⅡ码分别为 0x0d 和 0x0a). 答:函数修改为: C_UTRSTAT00 ldr r2,=UTRSTAT0 ldr r3,[r2] add r3,r3,#1 CMP r3,#0 beq C_UTRSTAT00C_UTRSTAT01 ldr r2,=UTRSTAT0 ldr r3,[r2] add r3,r3,#2 cmp r3,#0 beq C_UTRSTAT01ldr r2,=UTXH0 ldr r3,=URXH0 ldr r4,[r3] str r4,[r2] cmp r4,0x0d blne X B C_UTRSTAT00X bl C_UTRSTAT00 bl C_UTRSTAT01 ldr r2,=UTXH0 ldr r4,#0x0a str r4,[r2]本实验体现的异步串口通信的代码实现过程豆丁微信公众号
君,已阅读到文档的结尾了呢~~
微机原理第二次实验38241
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
微机原理第二次实验38241
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口AI芯片之于人工智能的意义,则可以理解为发动机之于汽车……
又是一年六一儿童节,虽然,早就超了过这个节日的年纪,……
漫威电影拍了这么多集不但丝毫不油腻,还越来越受欢迎,……
高度集成是目前MCU发展趋势,为了节省整体PCB空间,降低……
施耐德电气展示了针对电力设备、机器设备、汽车、石油化……
演讲人:曾伟权时间: 10:00:00
演讲人:黄科涛时间: 10:00:00
演讲人:Tracy Ma时间: 10:00:00
预算:¥500000预算:小于¥10000
江苏省湖北省
UART寄存器及UART5初始化程序
kinetis有多达6个UART串口,可支持MODEM、红外、ISO7816等操作模式。UART寄存器有很多,但基本应用只关注其中的几个就够了。下面介绍常用寄存器: UARTx_BDH:UARTx_BDL- 低13位是波特率发生器,U
kinetis有多达6个UART串口,可支持MODEM、红外、ISO7816等操作模式。UART寄存器有很多,但基本应用只关注其中的几个就够了。下面介绍常用寄存器:本文引用地址:
UARTx_BDH:UARTx_BDL- 低13位是波特率发生器,UARTx_BDH的第6位是RXD输入引脚有效边沿中断使能位,为1时使能;UARTx_BDH的第7位是LIN 间隔检测中断使能位,为1时使能。 UARTx_C4- 低5位是波特率微调位,第5位是10 位模式选择位,为0时,奇偶校验位是串行传输中的第9 位;为1时,奇偶校验位时串行传输中的第10 位。第6、7位是2个地址匹配模式使能位,当这2位全为0时,所有数据被传至缓冲区;当有非0的位时,丢弃最高有效位为0的数据,将最高有效位为1的数据与相应的匹配地址(UARTx_MA1、UARTx_MA2)比较,若匹配则数据传送到数据缓冲区,否则丢弃。 UARTx_C2- 控制寄存器2。第7位是传送器中断或者DMA发送使能位,为1时允许产生发送中断或DMA请求;第6位是发送完成中断使能位;第5位是接收器满中断或DMA 发送使能位,为1时允许产生接收中断或DMA请求;第4位是空闲线中断使能位,为1时允许产生空闲中断;第3位是发送使能位,为1时允许发送;第2位是接收使能位;第1位是接收器唤醒控制位,为1时RWU 启动唤醒功能并且抑制进一步的接收器中断请求,硬件通过自动对RWU 清零唤醒接收器;第0位是发送间隔字符,置1发送一个间隔字符(如果S2[BRK13]被清零,10,11 或者12 个逻辑0,如果S2[BRK13]被设置,13 或14 逻辑0),必须在一个间隔字符发送完之前清0。 UARTx_S1- 状态寄存器1。第7位是发送数据寄存器空标志,为1时表示寄存器空;第6位是发送完成标志,为1时表示发送完成;第5位是接收数据寄存器满标志,为1时表示寄存器满;第4位是空闲线标志,为1时表示;第3位是接收溢出标识,为1时表示发生过溢出;第2位是噪音标志,为1时表示自从上次标志被清零后最少检测到一个数据字带噪音接收了;第1位是帧错误标志,为1时表示有帧错误发生;第0位是奇偶校验错误标志,为1时表示自从上次这个标志被清零后,至少一个带有奇偶校验错误的数据字被接收。 UARTx_D- 收或发的数据。
在使用UART前要做下面2件事:
1、配置系统集成模块,打开UART和相应端口的时钟。为了低功耗的设计,kinetis的很多功能默认是关着的,要用程序把用到的功能打开。
2、设置引脚复用,相应的PORT(本例是PORTE)用作UART。
发送过程如下:
1、首先设置波特率,UART baud rate = UART module cLOCk / (16 × (SBR[12:0] + BRFD)),涉及UARTx_BDH、UARTx_BDL、UARTx_C4三个寄存器。
2、查询状态寄存器UARTx_S1,判断发送数据空标识位TDRE。
3、若TDRE为1,写数据寄存器UARTx_D。
4、写控制寄存器UARTx_C2,让TE位置1以允许发送。
5、重复2~3步实现多个数据接收。
接收过程如下:
1、首先设置波特率,UART baud rate = UART module clock / (16 × (SBR[12:0] + BRFD)),涉及UARTx_BDH、UARTx_BDL、UARTx_C4三个寄存器。
2、写控制寄存器UARTx_C2,让RE位置1以允许接收。
3、查询状态寄存器UARTx_S1,判断接收数据满标识位RDRF。
4、若RDRF为1,读数据寄存器UARTx_D。
5、重复3~4步实现多个数据接收。
下面是UART5的初始化程序:
void UART_Init(){
// SIM_SCGC1: UART5=1
SIM_SCGC1 |= (uint32_t)0x0800UL;
// SIM_SCGC5: PORTE=1
SIM_SCGC5 |= (uint32_t)0x2000UL;
// PORTE_PCR9: ISF=0,MUX=3 做UART
PORTE_PCR9 = (uint32_t)((PORTE_PCR9 & (uint32_t)~0xUL) | (uint32_t)0x0300UL);
// PORTE_PCR8: ISF=0,MUX=3 做UART
PORTE_PCR8 = (uint32_t)((PORTE_PCR8 & (uint32_t)~0xUL) | (uint32_t)0x0300UL);
UART5_C4 = 0x14;
//波特率微调
UART5_BDH = (312>>8) & 0x1F;//设波特率9600bps
UART5_BDL = 312&0xFF;
UART5_C2 |= 1<<2;//允许接收}
下面是主程序:
int main(void){
int idle,counter = 0;
char rcv_buf[10];
MCG_Init();
UART_Init();
printf("Hello (Kinetis) World in &#39;C&#39; from MK60DX256Z derivative! nr");
UART5_C2 |= 1<<2;
if( (UART5_S1&(1<<7)) != 0)
UART5_D = 0x55;
UART5_C2 |= 1<<3;
if( (UART5_S1&(1<<5)) != 0)
rcv_buf[counter] = UART5_D;
counter++;
if(counter >= 10)
counter = 0;
return 0;}
这是北京“近十年最宽松的落户政策”!消息在北京创投圈激起了涟漪。这些年,北京几乎聚集了中国数量最多顶尖的创业公司和创投机构,从IDG资本、红杉中国、经纬创投到百度、京东、美团、今日头条….浩浩荡荡数十万人。这一纸新规有望让他们落地生根。......关键字:
你对这些来自东方的程序员有没有一些总结性的看法和观点(比如:他们是否合作,是否能按时提交代码,写出的程序是否有质量?)。依据是什么?......关键字:
程序员们在 StackExchange 上有激烈的讨论,如果偷偷把自己的工作自动化,是不是不道德?......关键字:
日,一名为Laszlo Hanyecz的程序员用一万个比特币购买了两个披萨。当时一枚比特币价值仅为0.003美分,如今则是9669.27美元。......关键字:
我不算是聪明的人,经历也不算特别成功,但一步一步走来,我认为,我能做到的,你一定也能做到,而且应该还能做得比我更好。......关键字:
据Businessinsider报道,在硅谷中想当一个出色的程序员,意味着与诸多精英面临直接竞争。公司给你开出了丰厚的薪水,免费的大餐,免费司机接送,硅谷的程序员在某种意义上就像是好莱坞的明星。Altay Guvench,曾经是一名程序员的......关键字:
你对这些来自东方的程序员有没有一些总结性的看法和观点(比如:他们是否合作,是否能按时提交代码,写出的程序是否有质量?)。依据是什么?......关键字:
我 要 评 论
热门关键词实验3_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
&&《微处理器系统原理及嵌入式系统设计》课程实验的实验报告答案
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
&#xe64e;加入VIP
还剩4页未读,
定制HR最喜欢的简历
你可能喜欢&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
该文档贡献者很忙,什么也没留下。
&#xe602; 下载此文档
正在努力加载中...
微机实验报告(含思考题)实验3
下载积分:1400
内容提示:微机实验报告(含思考题)实验3
文档格式:DOC|
浏览次数:6|
上传日期: 20:22:57|
文档星级:&#xe60b;&#xe60b;&#xe60b;&#xe60b;&#xe60b;
全文阅读已结束,如果下载本文需要使用
&#xe71b; 1400 积分
&#xe602;下载此文档
该用户还上传了这些文档
微机实验报告(含思考题)实验3
关注微信公众号}

我要回帖

更多关于 stm8l时钟寄存器配置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信