PFDL库 是什么从哪得到 还有使用方法 呢? 谢谢!
仿照 GUI Demo Source Code 实现了低功耗的 HALT 和 STOP 模式
在进入STOP 模式后 开启了外部中断 在用户手册上有说明
这样在串口RX 引脚上有数据的时候 恢复到正常模式
但这样话容易引发串口接收数据错误
对这个bug的处理我做的不好 只是勉强实现了功能
同时发现 在调试的时候 如果全速运行 哪怕我没有设置断点 也会自动进入下面的中断
不知道原因是什么
实际测试
正常模式 电流约为6.4mA
正常模式下 串口发送 '2' 进入HALT 模式 电流约为2.4 mA
正常模式下 串口发送 '1' 进入STOP模式 电流约为1.8 mA
貌似我这个结果比数据表中的大啊 求高人指点
代码 myHALT.rar
PS: 悲催啊 后来发现是我的mA表量程调的太大了 而且 没有设置外部晶振
使用了之前的51的板子
“通过RL78/G13的P2口作为数据Data的输入输出端口--共八位,分别与LCD1602的DB0--DB7相连,即P1n---DBn ;P7.0、P7.1、P7.2分别用于LCD1602的三个控制线RS、R/W、E,即P7.0--RS,P7.1--R/W,P7.2--E相连接”。——andery88
采用了两个方法
方法1 参考 andery88 的历程
方法2 参考RL78/G13 Renesas Starter Kit 的历程中的LCD代码 (历程代码是4线方式,修改为8线方式),例子代码可以参考的 sacq 帖子 “迷茫了,充个电”http://share.eepw.com.cn/share/download/id/78713
两种方法证明都可行
实物图
液晶本身也有些问题 画黑线的格子就是无法显示的地方
代码:myLCD.rar
下一步 向 LCD 显示RTC进发
参考已有的 RTC 例程和 LCD例程
液晶屏有问题 有些地方显示不出来
视频稍后上传
每隔1s的话 LED D2 会闪灭
还有很多优化的余地
比如说 其实大部分情况下都是只更新秒时钟的显示
代码 myLcdRtc.rar
视频地址:http://union.bokecc.com/flash/player.swf?vid=24C7E05726CF9FE8&siteid=290666218ACBA694&playerid=EEA982EE6B20F4D1&playertype=1
实现MCU做主机 全功能IIC通信 读写AT24C02
电路图
注意SCL SDA 要接上拉电阻
Applilet设置
自动生成的代码 IICA0_MasterSendStart 在发送数据时 其实包含了器件内部的地址
加入我们要发送8个字节的数据
其实要发送9个字节
第一个字节就是器件内部地址
在读取AT24C02时候 先用 IICA0_MasterSendStart 发送一个字节的内部地址
再调用IICA0_MasterReceiveStart读取数据
实现功能:
点亮D2
IIC发送数据
熄灭D2
延时
IIC 读取数据
COM发送读取到的数据
主要代码:
void main(void)
{
/* Start user code. Do not edit comment generated here */
initWriteBuff();
fullWriteBuff();
// 先点亮LED 灯
PORT_ChangeP77Output(0);
// 先写入
// 设置读写地址
SetRWAddress(0x08);
IICA0_MasterSendStart
(
EEPROM_DEVICE_ADDRESS, // 0xA0
write_buffer,
EEPROM_NUMB_WRITE, // 9 算上存储单元地址
0xF
);
simpleDelay();
// 循环等待发送完成
while(IICASendFlag == 0)
{
NOP();
}
IICASendFlag = 0;
// 熄灭LED 灯
PORT_ChangeP77Output(1);
// 读取IIC 数据
// 先发送器件地址及存储地址
IICA0_MasterSendStart
(
EEPROM_DEVICE_ADDRESS, // 0xA0
write_buffer,
EEPROM_WORD_ADDRESS, // 1 算上存储单元地址
0xF
);
// 延时
while(--_delay);
while(--_delay);
// 读取数据
IICA0_MasterReceiveStart
(
EEPROM_DEVICE_ADDRESS | 0x01,
read_buffer,
EEPROM_RECEIVE_COUNT, // 8 不算存储单元地址
0xF
);
// 如果读取完成后 调用中断发送读取的数据
// 如果需要直接发送数据化 此时实际尚未接受完成 需要调用延时
// 或者 循环等待发送完成 设置标志变量
while(IICARevFlag == 0)
{
NOP();
}
IICARevFlag = 0;
// 通过串口发送出读取到的数据
UART2_Start();
UART2_SendData(read_buffer, 8);
while (1U)
{
// 调试时候 发现 系统在while循环空闲等待的时候 完成了后继 IIC 数据的接收
NOP();
}
/* End user code. Do not edit comment generated here */
}
准备再试下简化功能的IIC
还有 谁给推荐个简单 常用 管脚少的 SPI 通信的 SDRAM/ Flash 吧
以前没用过 这次试试
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |