STM32+RTT 应用(1)
来源:互联网 发布:淘宝怎么指纹支付 编辑:程序博客网 时间:2024/06/10 07:20
STM32F103C8 移植+手机消息提醒功能
(1) 有了之前trace code的基础,移植RTT比较容易.
STM32F103C8T6只有64K-Flash,20K-RAM,移植的主要工作就是去掉暂时不需要的功能,减小code体积、修改RAM大小宏定义,晶振频率。
#define STM32_SRAM_SIZE 20
(2) 手机通知
stm32通过蓝牙模块接收手机通知中心的广播消息,使用协议是ANCS(Apple Notification Center Service)。由于使用的蓝牙模块已经集成了ANCS功能,只要通过AT指令接收、发送消息既可,AT指令通过注册的”uart2”设备传输。
uart2设备数据使用中断回调函数的方式,收到数据后通知需要数据的进程。
bt_io = rt_device_find("uart2");if(bt_io != RT_NULL){ rt_device_set_rx_indicate(bt_io, rx_getdata); rt_device_open(bt_io, RT_DEVICE_OFLAG_RDWR|RT_DEVICE_FLAG_INT_RX); rt_kprintf("open uart2\r\n");}
(3) rtc实现时钟
使用RTC实现简单的时钟功能,当前时间记录在备份寄存器,有后备电源的情况下可以断电后继续计时。
Rtt code中有rtc相关部分,但是默认并没有用到,这里使用需要调用init函数并稍微修改一下。主要修改是打开秒中断,并且在同步手机时间戳后将时间写入备份寄存器。
void rt_hw_rtc_init(void){ rt_time_t now; rtc.type = RT_Device_Class_RTC; if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5) { rt_kprintf("rtc is not configured\n"); rt_kprintf("please configure with set_date and set_time\n"); date.hour = 0; date.min = 0; date.ss = 0; if ( RTC_Configuration() != 0) { rt_kprintf("rtc configure fail...\r\n"); return ; } } else { now = RTC_GetCounter(); /* Wait for RTC registers synchronization */ RTC_WaitForSynchro(); date.hour = (now/3600)%24; now %= 3600; date.min = now/60; date.ss = now%60; RCC_ClearFlag(); RCC_RTCCLKCmd(ENABLE); RTC_WaitForSynchro(); RTC_ITConfig(RTC_IT_SEC, ENABLE); RTC_WaitForLastTask(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); PWR_BackupAccessCmd(ENABLE); RTC_ExitConfigMode(); RTC_NVIC_Config(); } ......}
(4) 显示模块
显示部分使用了一个8*8的单色点阵,通过MAX7219驱动,使用简单、节省IO。由于显示空间只有8x8点阵,只能显示简单的内容,所以在显示上做了简单的动态效果。
PS. 预告,下一个应用打算实现基于usb vcom的IAP,并且尝试log也通过usb接口输出,这样只有第一次下载需要下载器或uart,之后只需要一根usb线即可。
0 0
- STM32+RTT 应用(1)
- STM32+RTT 应用(2)
- STM32 RTT LCD
- RTT
- rtt
- Jlink工具下的RTT调试应用
- Jlink工具下的RTT调试应用
- STM32 应用
- 浅谈工程师的调试法宝(四)---RTT的应用
- 【转载】Jlink工具下的RTT调试应用
- 1、STM32的资源和应用
- STM32 复位及时钟 应用总结(1)
- STM32应用笔记一
- STM32+GPIO应用笔记
- STM32 GPIO应用笔记
- STM32位带应用
- STM32 位带应用
- STM32 位带应用
- GitHub入门与实践(2)掌握Git 5、从远程仓库获取
- C++自制Redis 数据库(十)数据结构类
- mycat 离散分片 -> 枚举分片
- mycat 离散分片 -> 程序指定分区的分片
- 微信朋友圈闪退代码是什么?微信朋友圈闪退代码使用方法
- STM32+RTT 应用(1)
- how to cmake to build directory
- 51Nod 1007 正整数分组(01背包的变形)
- [基础知识] 总结使用Unity 3D优化游戏运行性能的经验
- Android学习-多媒体应用
- LeetCode Algorithms #191 <Number of 1 Bits>
- 在ios中使用soundtouch库实现变声
- GitHub入门与实践(2)掌握Git 6、Git学习资料
- HTTP状态码