STM32+UCGUI手机界面,拼音输入法,文件浏览,BMP,指针时钟

2019-12-20 21:39发布

本帖最后由 xi_liang 于 2013-6-22 02:55 编辑

stm32_live_v2.jpg (344.56 KB, 下载次数: 7) 下载附件 2013-6-22 01:05 上传

把开发板资源汇总一下:

原理图:
http://d1.ourdev.cn/bbs_upload78 ... ev_602958HX5VN1.pdf

我翻译的书《一个内幕者对STM32的介绍》
http://www.amobbs.com/thread-5530326-1-1.html

百为STM32开发板视频教程陆续更新中
http://www.amobbs.com/thread-5531370-1-1.html

视频教程目录:
1、百为STM32开发板功能介绍
2、百为STM32开发板原理图分析
3、STM32硬件设计入门
4、Cortex-M3深入理解1 《一个内幕者对STM32的介绍1》
5、Cortex-M3深入理解2 《一个内幕者对STM32的介绍2》
6、Cortex-M3深入理解3 《一个内幕者对STM32的介绍3》
7、Cortex-M3深入理解4 《一个内幕者对STM32的介绍4》
8、如何通过串口烧写STM32程序
9、如何通过JLINK烧写STM32程序
10、如何创建RealView MDK工程和如何通过RealView MDK下载程序
11、启动代码分析
12、LED流水灯
13、按键输入
14、RCC时钟控制
15、固件函数库介绍
16、LED流水灯(库函数)
17、17、SysTick系统定时器
18、STM32中断和事件
19、USART串口通信
20、RTC实时时钟
21、备份寄存器
22、独立看门狗
23、窗口看门狗
24、SPI串行通信
25、I2C温度传感器

STM32烧写方法汇总(串口,JLINK,DFU)
http://www.amobbs.com/thread-5526370-1-1.html

百为STM32开发板官方DEMO(SD卡版本)BMP浏览,U盘WAV播放
http://www.amobbs.com/thread-5536581-1-1.html

百为STM32+RT-thread网络收音机,可点播豆瓣音乐,播放SD卡MP3
http://www.amobbs.com/thread-5530151-1-2.html

stm32官方开发板86个测试例程
http://www.amobbs.com/thread-5503748-1-1.html

3D图形显示STM32版——源码及资料
http://www.amobbs.com/thread-5504122-1-1.html

stm32_gui_lib在百为stm32开发板上运行效果
http://www.amobbs.com/thread-5041599-1-1.html

完整源码版uCOSII2.86+uCGUI3.90在stm32上的移植,含uCGUI3.9源码(不是.lib)
http://www.amobbs.com/thread-4787247-1-1.html

做了个DM9000板,准备上STM32+DM9000+LWIP
http://www.amobbs.com/thread-5511065-1-1.html

STM32+FATFS+SDIO+helix 软解MP3成功了
http://www.amobbs.com/thread-5089622-1-1.html

音乐频谱基础 百为STM32开发板 官方FFT demo演示(源码+图)
http://www.amobbs.com/thread-5500240-1-1.html

stm32 uclinux 启动成功了,在stm32f103zet6开发板上验证
http://www.amobbs.com/thread-4439872-1-1.html

最完美的触摸屏校正算法tslib——STM32实现(源码+图)
http://www.amobbs.com/thread-5523786-1-1.html

百为STM32开发板播放I2S音频(PCM格式WAV文件)
http://www.amobbs.com/thread-5521405-1-1.html

在st_gui_lib上加了tsc2046触摸功能——百为STM32
http://www.amobbs.com/thread-5529369-1-1.html

百为STM32开发板UCOSII演示程序源码+图
http://www.amobbs.com/thread-5525265-1-1.html

STM32烧写方法汇总(串口,JLINK,DFU)
http://www.amobbs.com/thread-5526370-1-1.html

百为STM32开发板播放ADPCM
http://www.amobbs.com/thread-5521225-1-1.html

百为STM32开发板 RT-THREAD代码
http://www.amobbs.com/thread-5515652-1-1.html

百为STM32+emWin5.14图形界面演示程序
http://www.amobbs.com/thread-5532161-1-1.html

百为STM32开发板接摄像头大王wangguanfu的OV7670模块,源码+图
http://www.amobbs.com/thread-5522203-1-1.html

开贴研究STM32 WIFI,打造2013年最酷的贴
http://www.amobbs.com/thread-5513966-1-1.html

百为STM32裸机+WM-G-MR-09 WIFI + LWIP源码--全球首发
http://www.amobbs.com/thread-5534196-1-1.html






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
xi_liang
1楼-- · 2020-01-01 16:10
百为SIM900开发板还在焊接中,UCGUI手机界面加上了SIM900打电话功能
另外给这个系统起了个名字,暂且就叫做BPhone吧


SIM900打电话源码:
gsm.c
/**
*****************************百为技术有限公司*********************************
作者:张锡良
时间:2013年5月10日
技术支持论坛;www.stm32bbs.com
官方淘宝网店: http://baiweijishu.taobao.com
*******************************STM32技术论坛**********************************
**/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_lib.h"
#include <stddef.h>
#include <string.h>
#include <ucos_ii.h>
#include "GUI.h"
#include "ff.h"
#include "gsm.h"

#define        USARTx                                 USART2
#define        RCC_APB1Periph_USARTx                  RCC_APB1Periph_USART2
#define        GPIOx                                  GPIOA
#define        RCC_APB2Periph_GPIOx                  RCC_APB2Periph_GPIOA
#define        GPIO_TxPin                            GPIO_Pin_2
#define        GPIO_RxPin                                  GPIO_Pin_3

#define        GPIO_PWR                                                                        GPIOB
#define        GPIO_PIN_PWR                                                        GPIO_Pin_0


void GSM_lowlevel_Init()
{
  GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTx, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_PIN_PWR;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  GPIO_Init(GPIO_PWR, &GPIO_InitStructure);

  /* Configure USARTx_Tx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_TxPin;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOx, &GPIO_InitStructure);

  /* Configure USARTx_Rx as input floating */
  GPIO_InitStructure.GPIO_Pin = GPIO_RxPin;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOx, &GPIO_InitStructure);       

/* USARTx configuration ------------------------------------------------------*/
  /* USARTx configured as follow:
        - BaudRate = 115200 baud  
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - Hardware flow control disabled (RTS and CTS signals)
        - Receive and transmit enabled
  */
  USART_InitStructure.USART_BaudRate = 115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No ;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  
  /* Configure the USARTx */
  USART_Init(USARTx, &USART_InitStructure);
  /* Enable the USARTx */
  USART_Cmd(USARTx, ENABLE);
}

int GSM_Init()
{
        char command[]="ATx0dx0a";
        char echo_off_command[]="ATE0x0dx0a";
        char buf[50];         
       
        GSM_lowlevel_Init();

        GPIO_SetBits(GPIO_PWR,GPIO_PIN_PWR);
        GUI_Delay(1500);               
        GPIO_ResetBits(GPIO_PWR,GPIO_PIN_PWR);

        ATCommand_Send(command);
        ATCommand_Receive(buf, sizeof(buf));
        if(strstr(buf, "OK") == 0)
        {
                printf("gsm init ok! ");
        }
        else
        {
                printf("gsm init error! ");
                return FALSE;
        }       
       
//        ATCommand_Send(echo_off_command);
//        ATCommand_Receive(buf, sizeof(buf));
//        if(strstr(buf, "OK") == 0)
//        {
//                printf("gsm set echo off ok! ");
//        }
//        else
//        {
//                printf("gsm set echo off error! ");
//                return FALSE;
//        }       
       
        return TRUE;                         
}

void ATCommand_Send(char* buf)
{
        printf("%s",buf);
        while(*buf)
        {
                USART_SendData(USARTx, *buf++);
    /* Loop until the end of transmit */
    while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET)
    {
//                        GUI_Delay(1);
    }
        }
}

void ATCommand_Receive(char* buf, int bufLen)
{
        int index;
        GUI_Delay(10);
        while(index < bufLen)
        {
    /* Loop until the USARTx Receive Data Register is not empty */
    while(USART_GetFlagStatus(USARTx, USART_FLAG_RXNE) == RESET)
    {
//                        GUI_Delay(1);
    }
                buf[index++] = USART_ReceiveData(USARTx) & 0xFF;
        }
        buf[index] = '';
        printf("%s ",buf);
}

void GSM_DialNumber(char* number)
{
        char command[50];
        char buf[50];
        GSM_Init();
        GUI_Delay(2000);
        memset(command,0,sizeof(command));
        sprintf(command, "ATD%s;", number);
        strcat(command,"x0dx0a");
        ATCommand_Send(command);
        ATCommand_Receive(buf, sizeof(buf));       
}
chenxuyang1991
2楼-- · 2020-01-01 17:20
mark一下
xi_liang
3楼-- · 2020-01-01 22:15
挂断电话:
void GSM_Hangup()
{
        char command[] = "ATH ";
        char buf[50];
        ATCommand_Send(command);
        ATCommand_Receive(buf, sizeof(buf));       
}
xi_liang
4楼-- · 2020-01-02 03:05
 精彩回答 2  元偷偷看……
魏东江
5楼-- · 2020-01-02 06:40
MARK                        
xi_liang
6楼-- · 2020-01-02 11:10
百为STM32+SIM900发送PDU中英文短信1

参考文档:
SMS_PDU-mode.pdf
sim900_sms_app_note.pdf
PDU短信编程的问题大概有10年了吧.pdf

发送PDU中英文短信,主要是下面几条AT命令:
AT+CMGF=0 //设置为PDU模式,与TEXT模式区分
AT+CMGS=<length> <CR>
<pdu> <Crtl/Z>

其中lendth是指TPDU的字节数,SMSC排除在外。
pdu是指SMSC和TPDU的组合

SMSC的结构如下:
Address-Length  //1字节,SMSC结构长度
Type-of-Address //1字节,通常为91
Address-Value    //多字节,Address-Length的值 = Type-of-Address的长度 + Address-Value的长度

其中Type-of-Address 的格式如下:

TP-DCS.jpg (12.66 KB, 下载次数: 0)

下载附件

2013-7-8 23:55 上传



bit 7 = 0 and bit 6 = 0 表示通用的编码
Bit 5, 0表示text不压缩,1表示text压缩

Bit 3 Bit2 Alphabet:
0 0 Default alphabet
0 1 8 bit
1 0 UCS2 (16bit)
1 1 Reserved

Bit 1 Bit 0 Message Class
0 0 Class 0
0 1 Class 1 Default meaning: ME-specific.
1 0 Class 2 SIM specific message
1 1 Class 3 Default meaning: TE specific (see GSM TS 07.05)

这里TP-DCS设为0x08

TP-VP:有效期。如果没有TP-VP结构,First-Octet结构里的TP-VPF设为0
TP-UDL:用户数据长度,即TP-UD的长度
TP-UD:用户数据

一周热门 更多>