2123|0

1903

帖子

0

TA的资源

版主

楼主
 

sam4s16c的寄存器配置基础教程---UART配置 [复制链接]

本帖最后由 star_66666 于 2016-11-30 15:39 编辑

最近项目涉及到和供应商合作,之前用atmel studio不能继续用了,不得不改用keil,于是潜水了一段时间,静下来仔细分析Datasheet,终于完成了,几乎所有外设驱动的寄存器配置,可以直接用于sam4s系列。看不懂的自己仔细研究Datasheet吧。个人的爱好是喜欢寄存器直接配置。
看官方的库,太乱,太累。
不喜欢拿来主义。
第二部分
配置uart
首先要使能IO口的时钟,如使能PIOA口,操作如下
PMC->PMC_PCER0 = 1 << ID_PIOA;
第二,禁止IO口
        mask = PIO_PA9 | PIO_PA10;
        PIOA->PIO_PDR = mask;
第三,设置对应的外设使能寄存器
        PIOA->PIO_ABCDSR[0] &= ~mask;
        PIOA->PIO_ABCDSR[1] &= ~mask;
第四,设置复合外设寄存器
p_pio->PIO_MDER = ul_mask;
第五,禁止上拉电阻
p_pio->PIO_PUDR = ul_mask;
第六,设置IO的缺省值
p_pio->PIO_CODR = ul_mask;
第七,配置IO口作为输出
        p_pio->PIO_OER = ul_mask;
        p_pio->PIO_PER = ul_mask;



下面开始UART的设置
首先,使能时钟
PMC->PMC_PCER0 = 1 << ID_UART0;

第二配置控制寄存器
        UART0->UART_CR = UART_CR_RSTRX | UART_CR_RSTTX | UART_CR_RXDIS | UART_CR_TXDIS;
第三,设置模式寄存器
        UART0->UART_MR = UART_MR_PAR_NO;
第四,设置波特率,下面提供的方式,任选
//        UART0->UART_BRGR = 0x35;//115200
        UART0->UART_BRGR = 0x27c;//9600
//        UART0->UART_BRGR = UART_BRGR_CD(120000000/(16*baud));
第五,禁止DMA功能
        UART0->UART_PTCR = UART_PTCR_RXTDIS | UART_CR_TXDIS;
第六,使能中断        
        UART0->UART_IDR = 0xffffffff;
        UART0->UART_IER = UART_IER_RXRDY;
第七,使能收发
        UART0->UART_CR = UART_CR_RXEN | UART_CR_TXEN;
最后,使能中断        
        NVIC_DisableIRQ(UART0_IRQn);
        NVIC_ClearPendingIRQ(UART0_IRQn);
        NVIC_SetPriority(UART0_IRQn,pri);
        NVIC_EnableIRQ(UART0_IRQn);





水平有限,请大家多指点,谢谢!
后续还有很多外设的寄存器配置教程,请大家关注。。。。。。。
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表