打印
[其他ST产品]

STM32+RTT 应用(1)

[复制链接]
291|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM32F103C8 移植+手机消息提醒功能
(1) 有了之前trace code的基础,移植RTT比较容易.
  STM32F103C8T6只有64K-Flash,20K-RAM,移植的主要工作就是去掉暂时不需要的功能,减小code体积、修改RAM大小宏定义,晶振频率。

#define STM32_SRAM_SIZE  20



使用特权

评论回复
沙发
欢乐家园|  楼主 | 2023-9-29 18:51 | 只看该作者
手机通知
  stm32通过蓝牙模块接收手机通知中心的广播消息,使用协议是ANCS(Apple Notification Center Service)。由于使用的蓝牙模块已经集成了ANCS功能,只要通过AT指令接收、发送消息既可,AT指令通过注册的”uart2”设备传输。
图2、手机收到微信消息

使用特权

评论回复
板凳
欢乐家园|  楼主 | 2023-9-29 18:51 | 只看该作者
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");
}

使用特权

评论回复
地板
欢乐家园|  楼主 | 2023-9-29 18:52 | 只看该作者
rtc实现时钟
  使用RTC实现简单的时钟功能,当前时间记录在备份寄存器,有后备电源的情况下可以断电后继续计时。
  Rtt code中有rtc相关部分,但是默认并没有用到,这里使用需要调用init函数并稍微修改一下。主要修改是打开秒中断,并且在同步手机时间戳后将时间写入备份寄存器。

使用特权

评论回复
5
欢乐家园|  楼主 | 2023-9-29 18:52 | 只看该作者
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();
    }
    ......
}

使用特权

评论回复
6
欢乐家园|  楼主 | 2023-9-29 18:53 | 只看该作者
显示模块
  显示部分使用了一个8*8的单色点阵,通过MAX7219驱动,使用简单、节省IO。由于显示空间只有8x8点阵,只能显示简单的内容,所以在显示上做了简单的动态效果。

使用特权

评论回复
7
欢乐家园|  楼主 | 2023-9-29 18:53 | 只看该作者
height="498" width="510" src="http://player.youku.com/embed/XMTQ3MDQ5NTY5Mg==" allowfullscreen="">


PS. 预告,下一个应用打算实现基于usb vcom的IAP,并且尝试log也通过usb接口输出,这样只有第一次下载需要下载器或uart,之后只需要一根usb线即可。

使用特权

评论回复
8
Stahan| | 2023-9-30 12:42 | 只看该作者
用不到的功能编译器还会编译吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

918

帖子

1

粉丝