本帖最后由 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
另外给这个系统起了个名字,暂且就叫做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));
}
一周热门 更多>