原创:sam4s16c的寄存器配置基础教程---USART配置
时间:10-02
整理:3721RD
点击:
最近项目涉及到和供应商合作,之前用atmel studio不能继续用了,不得不改用keil,于是潜水了一段时间,静下来仔细分析Datasheet,终于完成了,几乎所有外设驱动的寄存器配置,可以直接用于sam4s系列。看不懂的自己仔细研究Datasheet吧。个人的爱好是喜欢寄存器直接配置。
看官方的库,太乱,太累。
不喜欢拿来主义。
第三部分
配置usart
首先要使能IO口的时钟,如使能PIOA口,操作如下
PMC->PMC_PCER0 = 1 << ID_PIOA;
第二,禁止IO口
mask = PIO_PA5 | PIO_PA6;
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;
下面开始USART的设置
首先,使能时钟
PMC->PMC_PCER0 = 1 << ID_USART0;
第二配置控制寄存器
USART0->US_CR = US_CR_RSTTX | US_CR_TXDIS | US_CR_RSTRX | US_CR_RXDIS | US_CR_RSTSTA | US_CR_RTSDIS | US_CR_DTRDIS;
第三,设置模式寄存器
USART0->US_MR =US_MR_USART_MODE_NORMAL /* 硬件握手模式 */
| US_MR_USCLKS_MCK /* 选择的MCK */
| US_MR_CHRL_8_BIT /* 数据位为8位 */
| US_MR_PAR_NO /* 无校验位 */
| US_MR_NBSTOP_1_BIT /* 停止位为1位 */
;
[td]
[/td]第四,设置波特率,下面提供的方式,任选
// USART0->US_BRGR= 0x35;//115200
USART0->US_BRGR= 0x27c;//9600
// USART0->US_BRGR= USART_BRGR_CD(120000000/(16*baud));
第五,禁止DMA功能
USART0->US_PTCR = UART_PTCR_RXTDIS | UART_CR_TXDIS;
第六,使能中断
USART0->US_IDR = 0xffffffff;
USART0->US_IER = US_IER_RXRDY;
第七,使能收发
USART0->US_CR = US_CR_RXEN | US_CR_TXEN;
最后,使能中断
NVIC_DisableIRQ(USART0_IRQn);
NVIC_ClearPendingIRQ(USART0_IRQn);
NVIC_SetPriority(USART0_IRQn,pri);
NVIC_EnableIRQ(USART0_IRQn);
水平有限,请大家多指点,谢谢!
后续还有很多外设的寄存器配置教程,请大家关注。
自己顶一下,哈哈哈
谢谢分享。很棒的原创资料
谢谢支持,多给点鼓励更好
我申请的试用,一个也没批准,真郁闷
这个有难度,,,,,
什么难度啊?