久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM8L單片機SI4463無線芯片IAR例程 廠家資料 好移植
[打印本頁]
作者:
crossfan
時間:
2019-2-15 14:58
標題:
STM8L單片機SI4463無線芯片IAR例程 廠家資料 好移植
STM8L-SI4463 IAR例程 廠家資料 好移植
單片機源程序如下:
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include "gpio.h"
#include "uart.h"
#include "oled.h"
#include "function.h"
#include "sensor.h"
#include "rf.h"
//SI4463 RF @STM8L151
void frameProcess( u8 *buf, u8 size )
{
u8 cmd = buf[0];
u8 len = buf[1];
LED_RX=1;
switch ( cmd )
{
case CMD_TEMP_HUM:
if ( rfAck )
{ //收到協議數據,立即發送應答
sendBuf[0] = CMD_ACK;
sendBuf[1] = 0;
RFSendData( sendBuf, 2 );
msg( "send reply..." );
}
if ( len == sizeof(float) )
{ //拿到溫濕度數據,更新顯示
memcpy( &temperature, buf + 2, 2 );
memcpy( &humidity, buf + 4, 2 );
//發送串口顯示
rf2uart( temperature, humidity);
msg( "get sensor dat" );
}
break;
case CMD_ACK:
//發送后收到應答
msg( "get reply" );
break;
default:
//無線接收轉串口透傳
UartSend( buf, size);
msg( "get rf data" );
break;
}
LED_RX=0;
}
int main( void )
{ int len;
asm("sim"); //全局中斷關閉
GPIOInit(); //IO初始化
Soft_I2C_Int();
GpioFicker(); //上電兩燈閃
UartInit(); //UART初始化
LED_Init(); //OLED屏初始化
getSensor(); //獲取初始溫濕度值
RFInit(); //射頻模塊初始化
RFRxMode(); //設置RF接收模式
asm("rim"); //全局中斷開啟
msg( "system start" );//顯示開機信息
/*infinite loop begin*/
while(1)
{
OledDisplay(); //OLED屏幕刷新顯示
keyProcess(); //按鍵監測處理
timerTask(); //定期更新傳感器讀數
uart2rf(); //串口轉無線透傳
len = RFRevData( revBuf ); //接收無線數據
if ( len > 0 )
{
frameProcess( revBuf, len );//對收到的數據進行處理
}
if ( rfContinueSend() ) //連續發送處理
{
delay_ms( 500 );
}
}/*infinite loop end*/
}
復制代碼
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include "function.h"
#include "oled.h"
#include "uart.h"
#include "gpio.h"
#include "rf.h"
#include "sensor.h"
unsigned short continueSendCnt=0; //連續發包數
unsigned short continueSendIndex=0;
void delay_us(u16 t)
{
u16 i;
for(i=0;i<t;i++)
{
asm("NOP");
}
}
void delay_ms(u16 t)
{
u16 i;
u16 j;
for(i=0;i<t;i++)
for(j=0;j<400;j++);
}
/* ------------------------------------------------------------------------ */
void GpioFicker( void )
{
//上電兩燈閃
LED_TX=1; //兩燈亮
LED_RX=1;
delay_ms(500);
LED_TX=0;
LED_RX=0;
delay_ms(500);
LED_TX=1; //兩燈亮
LED_RX=1;
delay_ms(500);
LED_TX=0;
LED_RX=0;
}
void keyProcess( void )
{
if ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_4 ) == 0x00 ) /* S1 C13 */
{
delay_ms( 20 );
if ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_4 ) == 0x00 )
{
msg( "clear ...." );
iSend = 0;
iRev = 0;
while ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_4 ) == 0x00 )
; /* 等待按鍵釋放 */
}
}
if ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_6 ) == 0x00 ) /* S2 A0 */
{
delay_ms( 10 );
if ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_6 ) == 0x00 )
{
u8 len = 0;
while ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_6 ) == 0x00 )
; /* 等待按鍵釋放 */
sendBuf[0] = CMD_TEMP_HUM; /* cmd: 1發送傳感器數據 2應答成功 */
sendBuf[1] = 4;
getSensor();
/* 數據長度 */
memcpy( &sendBuf[2], &temperature, 2 );
memcpy( &sendBuf[4], &humidity, 2 );
LedRed( On );
len = RFSendData( sendBuf, 6 );
if ( len > 0 )
msg( "send ok" );
else
msg( "send fail" );
LedRed( Off );
}
}
if ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_5 ) == 0x00 )
{
delay_ms( 10 );
if ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_5 ) == 0x00 )
{
while ( GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_5 ) == 0x00 )
; /* 等待按鍵釋放 */
continueSendCnt+=50;
}
}
}
char rfContinueSend(void)
{
if(continueSendIndex>=continueSendCnt)return 0;
continueSendIndex++;
LedRed( On );
getSensor();
sendBuf[0] = CMD_TEMP_HUM; /* cmd: 1發送傳感器數據 2應答成功 */
sendBuf[1] = 4; /* 數據長度 */
memcpy( &sendBuf[2], &temperature, 2 );
memcpy( &sendBuf[4], &humidity, 2 );
RFSendData( sendBuf, 6 );
sprintf( (char *) sendBuf, "AutoSend:%d/%d", continueSendIndex,continueSendCnt );
msg( (char *) sendBuf );
LedRed( Off );
OledDisplay();
return 1;
}
/* ------------------------------------------------------------------------ */
void uart2rf(void)
{
static u8 uart_rx_len_last=0;
u8 i,tmp=0;
if(uart_rx_len_last>0)
{
LED_TX=1;
if(uart_rx_len_last==uart_rx_len)
{
while(uart_rx_len)
{
u8 len=uart_rx_len>32?32:uart_rx_len;
RFSendData(uart_rx_buf+tmp,len);
uart_rx_len-=len;
tmp+=len;
delay_ms( 10 );
}
LED_TX=0;
}
}
uart_rx_len_last=uart_rx_len;
}
void rf2uart(s16 tem,s16 hum)
{
u8 sbuf[64];
sprintf( sbuf, "Tem%.1f Hum%.1f%%\n", tem / 10.0, hum / 10.0 );
UartSend( sbuf, 18);
}
void timerTask(void)
{
static u32 count;
//static u8 flag = 0;
static int lastRevByte=-1;
static u8 delay=1;
if ( ++count > 2 )
{
count = 0;
//收到數據5秒內顯示收到的數據而不是顯示采集到的本地數據
if(lastRevByte!=iRev)
{
lastRevByte=iRev;
delay=10;
}else{
if(--delay==0)
{
if(delay==0)delay=5;
getSensor();
}
}
}
}
void debug( const char* fmt, ... )
{
va_list args;
va_start( args, fmt );
vprintf( fmt, args );
va_end( args );
}
/*
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* -------------------- 私有函數定義 ------------------------------
*/
void msg( char *msg ) /* 如果要顯示中文,OLED點陣字庫必須有相應數據,英文則不需要 */
{
static u8 count=0;
char buf[8];
LED_PXx16MixStr( 0, 3, " " ); /* 16個字母 */
sprintf(buf,"%d:",++count%10);
LED_PXx16MixStr(0,3,buf);
LED_PXx16MixStr( 14, 3, msg );
//debug( msg );
}
void OledDisplay( void )
{
char buf[64] = "";
static char flag=0;
if(!flag)
{
sprintf( buf, "%s + SI7021", rfName );
LED_PXx16MixStr( 0, 0, buf );
flag=1;
}
sprintf( buf, "Tem%.1f Hum%.1f%%", temperature / 10.0, humidity / 10.0 );
LED_PXx16MixStr( 0, 1, buf );
sprintf( buf, "Snd:%d Rev:%d", iSend, iRev );
LED_PXx16MixStr( 0, 2, buf );
}
復制代碼
所有資料51hei提供下載:
STM8L_4463.7z
(892.6 KB, 下載次數: 43)
2019-2-15 16:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
jxchen
時間:
2019-2-17 12:31
感謝~~~~~~~~~~~~
作者:
gdgn_526345
時間:
2019-3-16 11:39
感謝喔!
作者:
hujj
時間:
2019-3-16 18:51
以前用51開發時買過這種模塊,但一直沒有用起來,這個資料很好,可以參考,謝謝樓主!
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
免费观看一区二区三区
|
欧美日视频
|
亚洲欧美日韩一区
|
亚洲免费大片
|
国产aⅴ爽av久久久久成人
|
免费成人毛片
|
三级黄色片
|
香蕉视频在线播放
|
91精品久久久久久久久
|
日韩在线视频免费
|
成人涩涩
|
艳妇乳肉亭妇荡乳av
|
亚洲激情在线视频
|
黄色一级录像
|
亚洲一级大片
|
日韩久久久久久久
|
中文在线视频
|
91麻豆精品
|
曰韩一级片
|
日韩伦理视频
|
九九视频在线免费观看
|
夜夜嗨av一区二区三区网页
|
在线看片a
|
成人免费福利
|
色激情网
|
国产黄色片在线观看
|
香蕉视频导航
|
国 产 黄 色 大 片
|
欧美综合激情
|
在线播放国产精品
|
成人免费毛片片v
|
毛片在线免费
|
99精品网站
|
一区二区美女
|
四虎影院永久免费
|
一区在线播放
|
特一级黄色片
|
午夜视频在线看
|
久久av一区二区三区亚洲
|
一级片aa
|
一级毛片黄色
|