🏆 个人主页:🎈 长夜漫漫想学习 🎈
🎁 本文收录专栏:🎈 ARM学习之路 🎈
🛒 其他专栏:🎈 C语言学习之路 🎈
📝 学习格言:路漫漫其修远兮,吾将上下而求索
💡 欢迎点赞、关注、收藏( •̀ ω •́ )✧ 一起努力,一起学习!
目录
uart:通用异步收发传输器,是设备之间进行异步通信的模块(硬件) 负责处理数据总线和串行口的串/并转换,并规定了通信方式,uart可以实现全双工的通信(发送和接收),通过两根信号线完成(Tx,Rx) 使用uart进行通信时,通常需要添加—个合适的电平转换器。
串行:每位数据,依次顺序传输
并行:多位数据,齐头并进同时传输
单工:规定只能由一端发送到另一端,规定了发送方和接收方
半双工:可以进行双向通信,但是同一时刻只能完成发送或接收一个操作 全双工:可以同时进行双向通信
同步:发送方在发送数据时,同时会发送一个同步的时钟信号,用于同步发送方和接收方的数据采样频率
异步:异步通信是以字节为单位发送,同一个字符中的相邻两位的时间间隔是固定的,不同的字符间的时间间隔不确定,发送方和接收方进行确定以固定(相同)的频率进行采样
硬件设备连接:
通信设备 芯片
Tx----------------------Rx
Rx-------—------------TX
传输的数据帧是可编程的,由线路控制指定位组成
控制指定位
1个起始位
5至8个数据位
可选的奇偶校验位
1到2个停止位
采用FIFO的Rx操作
采用FIFO的Tx操作
Exynos 4412 SCP为UART提供多种时钟。
UART使用SCLK_UART 时钟,来自时钟控制器。
- #define GPA1CON *((unsigned int *)0x11400020)
- #define ULCON2 *((unsigned int *)0x13820000)
- #define UCON2 *((unsigned int *)0x13820004)
- #define UBRDIV2 *((unsigned int *)0x13820028)
- #define UFRACVAL2 *((unsigned int *)0x1382002c)
- #define UTXH2 *((unsigned int *)0x13820020)
- #define URXH2 *((unsigned int *)0x13820024)
- #define UTRSTAT *((unsigned int *)0x13820010)
- void myputs(char * str)
- {
- int i;
- for(i = 0;str[i] != '\0'; i++)
- {
- //要发送数据一定要发送缓存寄存器为空,看状态寄存器,第一位为1就为空
- while(UTRSTAT & 2 == 0); //等于0就一直在当前循环执行
- UTXH2 = str[i];
- }
- }
- void delay()//延时函数
- {
- int i =0,j = 0;
- for(;i<1000000; i++)
- {
- for(;j < 1000000;j++);
- }
- }
- int main()
- {
-
- //设置GPIO,引脚为UART模式,GPA1_0,GPA1_1
- GPA1CON = GPA1CON & 0xff | 0x22;
- char a;
- //设置帧协议格式
- ULCON2 = 3;
- //控制寄存器,工作---有输出、输入(发送 接收)
- UCON2 = UCON2 & ~(0xf) | 5;
-
- //2、波特率设置
- UBRDIV2 = 53;
- UFRACVAL2 = 4;
-
- while(1)
- {
- myputs("接收数据成功\n");
- if( UTRSTAT & 1 != 0 ) //uart控制器接收到外部硬件的数据
- {
- UTXH2= URXH2; ; //返回数据内容
- delay();
- }
- }
-
- return 0;
- }
Exynos 4412 SCP中的看门狗定时器(WDT)是一个定时器件。
支持带中断请求的正常间隔定时器模式。
如果定时器计数值达到0(超时),则激活内部复位信号。
支持电平触发的中断机制
WTCON寄存器:
允许您启用/禁用看门狗定时器
从四个不同的源中选择时钟信号
启用/禁用中断
启用/禁用看门狗定时器输出
- #define WDTCON *((unsigned int *)0x10060000)
- #define WDTDAT *((unsigned int *)0x10060004)
- #define WDTCNT *((unsigned int *)0x10060008)
- //初始化 wdt看门狗
- void wdt_time()
- {
- //初始时钟频率100M hz
-
- //设置预分配 250
- WDTCON = WDTCON & ~(0xff<<8) | 249<<8;
-
- //设置固定分频 128
- WDTCON = WDTCON & ~(0x3<<3) | 0x3<<3;
-
- //设置复位
- WDTCON = WDTCON | 1;// WDTCON |= 1;
-
- //设置定时时间,----5s
- WDTDAT = 15625;//(存储定时时间)
- WDTCNT = WDTDAT;
-
- //启动看门狗
- WDTCON |= 1<<5;
- }
✨本篇到此结束啦!欢迎点赞👍收藏❤关注😎