久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
SI4438 STM8L101收發(fā)源程序與說明資料下載
[打印本頁]
作者:
cuan82
時間:
2018-4-17 17:12
標題:
SI4438 STM8L101收發(fā)源程序與說明資料下載
SI4438_STM8 Demo 程序說明文檔
工程說明
1、 Demo 工程是基于 Stm8L101 單片機在 STVD 平臺下對 SI4438 無線模塊的開發(fā)例程,用戶可在此基礎上加強對 SI4438 的理解,也可在此基礎上進行移植以便對 SI4438模塊進行2 次開發(fā)。
2、 Demo工程主要實現兩個功能(TX/RX) :
一、發(fā)送功能:模塊配置為發(fā)送功能,在發(fā)送模式 1,每秒發(fā)送一次固定字符串
“ashining”;在發(fā)送模式2,通過串口發(fā)送自定義數據 。
發(fā)送模式1 和發(fā)送模式2通過按鍵切換。
二、接收功能:模塊配置為接收功能,接收數據并通過串口將接收到的數據輸出,串口波特率默認配置為9600。
3、 Demo程序提供了硬件 SPI接口和軟件模擬 SPI接口 (基于C52 的Demo程序只有軟件模擬SPI 接口),用戶在移植時可根據不同的PCB布局和實際應用需求進行選擇。
4、 Demo程序開始運行時,兩個LED燈會閃爍3個周期(一亮一滅為一個周期) ,代表無線模塊已經初始化完成處于發(fā)送狀態(tài)或接收狀態(tài)。如果上電兩個 LED沒有正常閃爍,說明無線模塊初始化失敗或未檢測到無線模塊, 建議斷電重新插拔芯片再上電。
工程配置:
1、 發(fā)送功能和接收功能的選擇切換:Demo 工程只需經過簡單的配置修改就可以在發(fā)送功能和接收功能之間進行切換,采用這種編寫方式的目的是為了讓用戶更加容易理解SI4438 無線模塊發(fā)送和接收功能的操作方式到底有何不同, 讓用戶更容易掌握對無線模塊的操作并進行2 次開發(fā)。 發(fā)送和接收功能切換方法(以從默認的發(fā)送功能切換到接收功能為例) :解壓Demo工程壓縮包, 在Demo_SI4438_Stm8L101\Project_SI4438\Source_Files\app\inc文件夾下打開main.h 頭文件(或者通過開發(fā)軟件打開工程找到 main.h) ,該頭文件在包含其他相關頭文件后,便是關于工程配置的宏定義,第一個宏定義為發(fā)送功能和接收功能選擇切換使用的宏定義。第一個宏定義為#define __SI4438_TX_TEST__,保留該宏定義工程就被配置成發(fā)送功能 (默認工程配置為發(fā)送功能,即保留了該宏定義) ,通過屏蔽該宏定義(在 #define 前加“//”),可將工程由默認的發(fā)送功能配置成接收功能。
2、 硬件 SPI 接口和軟件模擬 SPI 接口的切換方法:切換方法同發(fā)送、接收功能的切換方法一致,main.h中第二個宏定義為#define __USE_SOFT_SPI_INTERFACE,屏蔽該宏定義為選擇硬件 SPI接口(工程默認配置為選擇硬件SPI接口) ,保留該宏定義為選擇軟件模擬 SPI接口。
注:在修改工程配置后,需要重新編譯再下載修改才會起效。
SI4463和SI4438 程序除了配置頭文件不一樣,其他一樣。
開發(fā)環(huán)境:
1、優(yōu)化選項選擇默認值,即不做不修改。
2、Editor -> Tab size 推薦設置為4,有利于工程中代碼和注釋的對齊。
stm8l101 收發(fā)程序,26M晶振。
單片機源程序如下:
/**
******************************************************************************
* @author 澤耀科技 ASHINING
* @version V3.0
* @date 2016-10-08
* @brief 主函數C文件
******************************************************************************
* @attention
******************************************************************************
*/
#include "main.h" //main.h 中含有TX/RX、軟件SPI/硬件SPI選擇配置選項
const char *g_Ashining = "ashining";
uint8_t g_TxMode = 0, g_UartRxFlag = 0;
uint8_t g_UartRxBuffer[ 64 ] = { 0 };
uint8_t g_SI4463ItStatus[ 9 ] = { 0 };
uint8_t g_SI4463RxBuffer[ 64 ] = { 0 };
/**
* @brief :主函數
* @param :無
* @note :無
* @retval:無
*/
int main( void )
{
uint16_t i = 0;
//串口初始化 波特率默認設置為9600
drv_uart_init( 9600 );
//LED初始化
drv_led_init( );
//SPI初始化
drv_spi_init( );
//SI4463初始化
SI446x_Init( );
led_red_off( ); //默認LED燈全為滅
led_green_off( );
for( i = 0; i < 6; i++ ) //SI4463初始化完成,兩個LED同時閃爍3個周期
{
led_red_flashing( );
led_green_flashing( );
drv_delay_ms( 500 );
}
#ifdef __SI4438_TX_TEST__
//=========================================================================================//
//*****************************************************************************************//
//************************************* 發(fā)送 **********************************************//
//*****************************************************************************************//
//=========================================================================================//
//按鍵初始化
drv_button_init( ); //Demo程序中,只有在發(fā)送時才會使用按鍵
while( 1 )
{
//模式切換
//Demo程序默認為發(fā)送模式1,即發(fā)送固定字符串“ashining”,可以通過按鍵切換到發(fā)送模式2,即通過串口發(fā)送數據,按鍵的作用就是切換發(fā)送模式1 2
//如果在程序移植過程中不需要兩種發(fā)送模式,刪除下面 if 語句程序塊和按鍵初始化程序即可
if( BUTOTN_PRESS_DOWN == drv_button_check( )) //檢測按鍵動作
{
g_TxMode = 1 - g_TxMode; //在TX_MODE_1( 0 ),TX_MODE_2( 1 )之間切換
//清LED狀態(tài)
led_green_off( );
led_red_off( );
if( TX_MODE_1 == g_TxMode )
{
for( i = 0; i < 6; i++ ) //切換到模式1 發(fā)送固定“ashining”固定字符串
{
led_red_flashing( );
drv_delay_ms( 500 );
}
}
else
{
for( i = 0; i < 6; i++ ) //切換到模式2 通過串口發(fā)送數據
{
led_green_flashing( );
drv_delay_ms( 500 );
}
}
}
//如果在程序移植過程中不需要兩種發(fā)送模式,刪除上面 if 語句程序塊和按鍵初始化程序即可
//模式切換
//模式1 1S發(fā)送“ashining”一次
if( TX_MODE_1 == g_TxMode )
{
//動態(tài)數據長度
#if PACKET_LENGTH == 0
SI446x_Send_Packet( (uint8_t *)g_Ashining, 8, 0, 0 );
#else
SI446x_Send_Packet( (uint8_t *)g_Ashining, PACKET_LENGTH, 0, 0 );
#endif
drv_delay_ms( 1000 );
led_red_flashing( ); //1S發(fā)送一次
}
else //模式2 外部通過串口發(fā)送數據到單片機,單片機通過SI4463將數據發(fā)送出去
{
//輪訓接收串口數據
i = drv_uart_rx_bytes( g_UartRxBuffer );
if( 0 != i )
{
if( 17 < i )
{
i = 0; //一次不超過17個字節(jié)
}
#if PACKET_LENGTH == 0
SI446x_Send_Packet( (uint8_t *)g_UartRxBuffer, i, 0, 0 );
#else
SI446x_Send_Packet( (uint8_t *)g_UartRxBuffer, PACKET_LENGTH, 0, 0 );
#endif
led_red_flashing( );
}
}
}
#else
//=========================================================================================//
//*****************************************************************************************//
//************************************* 接收 **********************************************//
//*****************************************************************************************//
//=========================================================================================//
while( 1 )
{
SI446x_Interrupt_Status( g_SI4463ItStatus ); //查詢中斷狀態(tài)
if( g_SI4463ItStatus[ 3 ] & ( 0x01 << 4 ))
{
i = SI446x_Read_Packet( g_SI4463RxBuffer ); //讀接收到的數據
if( i != 0 )
{
led_green_flashing( );
drv_uart_tx_bytes( g_SI4463RxBuffer,i ); //串口輸出SI4463接收到的數據
}
SI446x_Change_Status( 6 );
while( 6 != SI446x_Get_Device_Status( ));
SI446x_Start_Rx( 0, 0, PACKET_LENGTH,0,0,3 );
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.jpg
(18.99 KB, 下載次數: 58)
下載附件
2018-4-17 17:49 上傳
所有資料51hei提供下載:
Demo_SI4438_Stm8L101.zip
(699.33 KB, 下載次數: 105)
2018-4-17 17:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
908508455
時間:
2019-7-18 17:13
下載來看看
作者:
guolh
時間:
2021-4-20 22:32
為樓主點贊,支持分享~~~
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人在线视频观看
|
懂色av一区二区夜夜嗨
|
日韩欧美中文在线
|
www.婷婷.com
|
自拍偷拍欧美日韩
|
中文字幕免费
|
欧美大片91
|
成人福利视频在线观看
|
国产欧美一区二区三区在线看蜜臀
|
91午夜精品亚洲一区二区三区
|
久久一区
|
欧美日韩一区二区在线
|
中国农村毛片免费播放
|
日本黄色三级视频
|
国产美女自拍
|
可以免费看av的网站
|
天堂av网站
|
日韩欧美在线视频观看
|
国产一级片免费观看
|
国产片一区二区
|
国产精品成人免费视频
|
中文字幕高清在线
|
一级中国毛片
|
一区二区视频在线
|
深夜福利视频在线观看
|
国产精彩视频
|
www免费视频
|
俺去俺来也在线www色官网
|
自拍偷拍欧美日韩
|
91在线小视频
|
欧美成人高清
|
久久最新网址
|
欧美一级艳片视频免费观看
|
久久精品久久久久
|
天天综合网站
|
国产精品一区三区
|
免费在线观看毛片
|
毛片在线观看视频
|
黑人系列合集h
|
国产视频黄色
|
日韩三级大片
|