久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM8單片機無線315&433脈寬自適應_通用解碼程序
[打印本頁]
作者:
wxmlx
時間:
2021-7-18 11:12
標題:
STM8單片機無線315&433脈寬自適應_通用解碼程序
單片機源程序如下:
/*
RFINT不能用PA1 要改板 改在PC6
*/
/* Includes ------------------------------------------------------------------*/
#define MAIN_C
#include "ALL.h"
void Delay(u16 nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
//10ms定時中斷初始 在PWM時可更改
void TIME1_CONFIG(void)
{
/* Init TIMER 1 */
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE);
TIM1->IER = 0x00;//??????????? // 禁止中斷
TIM1->EGR = 0x01;//??????????? // 允許產生更新事件
TIM1->PSCRH = 0x0;//
TIM1->PSCRL = 0x4;// 2@2MHZ 4@4MHZ
TIM1->ARRH = 0x27; // 設定重裝載時的寄存器的高8位 2710=10ms
TIM1->ARRL = 0x10;
//TIM2->CNTRH = 0xEA; // 設定計數器的初值
//TIM2->CNTRL = 0x60; // 定時周期=1*60000=60000uS=60ms
TIM1->CR1 = 0x01;// b0 = 1,允許計數器工作 ?// b1 = 0,允許更新 設置控制器,啟動定時器
TIM1->IER = 0x01;// 允許更新中斷
}
//5ms定時中斷初始 CPU主頻2Mhz
void TIME2_CONFIG(void)
{
/* Init TIMER 4 */
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2, ENABLE);
TIM2->IER = 0x00;//??????????? // 禁止中斷
TIM2->EGR = 0x01;//??????????? // 允許產生更新事件
#ifdef FREQ_2M
TIM2->PSCR = TIM2_PRESCALER_2;// 2@2M 4@4M 取決于CPU頻率
#else
TIM2->PSCR = TIM2_PRESCALER_4;// 2@2M 4@4M 取決于CPU頻率
#endif
#if 0//def GUDINGMA//臨時為固定碼增加用
TIM2->PSCR = TIM2->PSCR/2;// 讓定時器速度再快一倍出來
#endif
TIM2->ARRH = 0xc3; // 設定重裝載時的寄存器的高8位 c350=50ms
TIM2->ARRL = 0x50; //本參數配合無線
//TIM2->CNTRH = 0xEA; // 設定計數器的初值
//TIM2->CNTRL = 0x60; // 定時周期=1*60000=60000uS=60ms
TIM2->CR1 = 0x01;// b0 = 1,允許計數器工作 ?// b1 = 0,允許更新 設置控制器,啟動定時器
TIM2->IER = 0x01;// 允許更新中斷
}
//5ms定時中斷設置 CPU主頻2Mhz
void TIM4_Config(void)
{
/* Init TIMER 4 */
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, ENABLE);
/* Init TIMER 4 prescaler: / (2^6) = 64/ */
#ifdef FREQ_2M
TIM4->PSCR = TIM4_PRESCALER_64;//// 4M=128 2M=64
#else
TIM4->PSCR = TIM4_PRESCALER_128;//// 4M=128 2M=64
#endif
/* HSI div by 1 --> Auto-Reload value: 16M/16 /64 = 1/64M, (1/64M) / 100 = 156.25*/
TIM4->ARR = 156;
/* Counter value: 2, to compensate the initialization of TIMER*/
//TIM4->CNTR = 2;
/* clear update flag */
TIM4->SR1 &= ~TIM4_SR1_UIF;
/* Enable Counter */
TIM4->CR1 = TIM4_CR1_CEN;
TIM4->IER=1;
}
#define CFG_GCR_SWD ((u8)0x01) /*!< Swim disable bit mask */
void INITIAL_ALL_PIN(void)
{
//CFG->GCR |= CFG_GCR_SWD;/*disable SWIM interface*/
/*
GPIO_Init(GPIOA,GPIO_PIN_ALL,GPIO_MODE_OUT_OD_LOW_SLOW);//關SET LED燈
GPIO_Init(GPIOB,GPIO_PIN_ALL,GPIO_MODE_OUT_OD_LOW_SLOW);//關SET LED燈
GPIO_Init(GPIOC,GPIO_PIN_ALL,GPIO_MODE_OUT_OD_LOW_SLOW);//關SET LED燈
GPIO_Init(GPIOD,GPIO_PIN_ALL,GPIO_MODE_OUT_OD_LOW_SLOW);//關SET LED燈
*/
//GPIO_Init(GPIOA,GPIOA_OUT_L,GPIO_MODE_OUT_PP_HIGH_SLOW);//關SET LED燈
GPIO_Init(GPIOB,GPIOB_OUT_H,GPIO_MODE_OUT_OD_HIZ_SLOW); //關ALARM LED燈
GPIO_Init(GPIOC,GPIOC_OUT_L,GPIO_MODE_OUT_PP_LOW_SLOW);//PWM
GPIO_Init(GPIOC,GPIOC_IN_PU,GPIO_MODE_IN_PU_NO_IT);//按鍵中斷
GPIO_Init(GPIOD,GPIOD_OUT_H,GPIO_MODE_OUT_PP_HIGH_FAST);//串口發送
GPIO_Init(GPIOD,GPIOD_IN_PU,GPIO_MODE_IN_PU_NO_IT);//i2c
EXTI->CR1 =(EXTI_SENSITIVITY_RISE_FALL<<4);
GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_IN_FL_IT);//無線接收
}
void UART_CONFIG(void )
{
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
UART1_ITConfig(UART1_IT_TC, DISABLE);
UART1_Cmd(ENABLE);
}
void PUT_CHAR(uchar Data)
{
int i=10000;
UART1->SR&=~UART1_FLAG_TC;//COM_USART[COM1]->SR&~USART_FLAG_TC;
UART1->DR = Data;
while((UART1->SR & UART1_FLAG_TC) == 0x00)
{if(--i==0)break;
}// 若發送寄存器不空,則等待
}
const char hex[] = "0123456789ABCDEF";
//********************************************************
PRINT_DEC_OR_HEX(uchar format,uchar d)
{
uchar i;
switch(format)
{case 'd':
i=d/100;
if(i!=0)PUT_CHAR(hex[i]);
i=(d%100)/10;
if(d>=100||i!=0)PUT_CHAR(hex[i]);
PUT_CHAR(hex[d%10]);
break;
case 'D':
PUT_CHAR(hex[d/10]);
PUT_CHAR(hex[d%10]);
break;
case 'x':
PUT_CHAR(hex[d>>4]);
PUT_CHAR(hex[d&0x0f]);
break;
}
}
//********************************************************
void PRINTF (uchar *pstring,uchar *arg)
{
uchar str;
char count=0;
uchar i;
uint t;
//PUT_CHAR ('\r');
//PUT_CHAR ('\n');
while(1) /* until full pstring string read */
{
str = *pstring++; /* until '%' or '\0' */
if(str=='%')
{str = *pstring++;
if(str=='i')
{t=(arg[count]<<8)+arg[count+1];
if(t>=10000)
{str=t/10000;PRINT_DEC_OR_HEX('d',str);}
if(t>=1000)
{str=t%10000/1000;PRINT_DEC_OR_HEX('d',str);}
if(t>=100)
{str=t%1000/100;PRINT_DEC_OR_HEX('d',str);}
if(t>=10)
{str=t%100/10;PRINT_DEC_OR_HEX('d',str);}
{str=t%10; PRINT_DEC_OR_HEX('d',str);}
count++;
}
else
PRINT_DEC_OR_HEX(str,arg[count++]);
}
#if 0
else if(str=='
)//打印數組
{
str = *pstring++;
count=0;
while(1)
{
if(str=='x')
{i=arg[count]>>4;
if(i==0x0b)PUT_CHAR('G');
else if(i==0x0A)PUT_CHAR('+');
else if(i>9)break;
else PUT_CHAR(hex[i]);
i=arg[count]&0x0f;
if(i==0x0b)PUT_CHAR('G');
else if(i==0x0A)PUT_CHAR('+');
else if(i>9)break;
else PUT_CHAR(hex[i]);
}
else{
PRINT_DEC_OR_HEX('x',arg[count]);
}
count++;
if(count>=16)break;
}
}
#endif
else if(str==0)return;
//else if(str==0XFF)return;
else
{
PUT_CHAR (str);
}
}
}
void DELAY(uint T)
{
while(T--);
}
void RF_STUDY_START(void)
{
SYS.study_sec=30;
LED_STA_CONVER(led_study);
DEBUG_COM_STREAM("\r\n等待學習",NULL);
}
void RF_STUDY_EXIT(void)
{
SYS.study_sec=0;
LED_STA_CONVER(led_standby);
DEBUG_COM_STREAM("\r\n退出學習",NULL);
}
void PER_SECOND_EXE(void)
{
if(TIME.b_second==0)return;
TIME.b_second=0;
CHECK_RF_CONTINUE_TIME();
if(0!=SYS.study_sec){if(--SYS.study_sec==0)LED_STA_CONVER(led_standby);}
//DEBUG_COM_STREAM("\r\n我是秒測試",NULL);
}
void CHECK_KEY_STUDY(void)
{
uchar t_50ms=0;
uint i;
if(p_key1==1)return;
WAIT_5ms(10);
if(p_key1==1)return;
#ifdef DEBUG_TX
RF.pulse_us=400;
i=RF.pulse_us*32;
DEBUG_COM_STREAM("\r\n同步%i",(u8*)&i);
TX1527(&SYS_SAVE.ini_flag);
return;
#endif
while(1)
{
if(p_key1==1)break;
WAIT_5ms(10);
if(++t_50ms>70)////3.5 sec
{
RF_STUDY_EXIT();
RESET_EEPROM();
DEBUG_COM_STREAM("\r\n清空配件",NULL);
LED_STA_CONVER(led_key);
LED_ALL_FLASH(1,200);//全燈長亮一次
while(p_key1==0);
LED_STA_CONVER(led_standby);
return;
}
}
if(0!=SYS.study_sec)
{RF_STUDY_EXIT();
}
else
{
RF_STUDY_START();
}
}
void Flash_OFF_act_halt(void)
{
FLASH->CR1 |= 0x04;
}
//啟用LPVR 如果HALT時不啟用LPVR 耗電增加140uA
/*Configure the MVR to be OFF during the halt phase of HALT mode*/
void MVReg_OFF_act_halt(void)
{
CLK->ICKR |= 0x20;
}
//t必須小于50
void WAIT_5ms(uchar t)
{
TIME.ms5_ex=0;
while(TIME.ms5_ex<t);//wfi();
}
const uchar reg_key[]={1,9,7,8,2,0,0,8};
void main(void)
{
#ifdef FREQ_2M
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);
#else
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);
#endif
//CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
INITIAL_ALL_PIN();
TIM4_Config();
TIME2_CONFIG();
UART_CONFIG();
READ_SYS_SAVE();
RF_ARRAY_INI();
enableInterrupts();
CHECK_CPU_REG();
LED_STA_CONVER(led_standby);
LED_ALL_FLASH(1,100);//500ms
while (1)
{
wfi();
PER_SECOND_EXE();
RF_CHECK_QUEUE();
RF_DECODE();
CHECK_KEY_STUDY();
if(UART.b_rxonoff)
{
UART.b_rxonoff=0;
DEBUG_COM_STREAM("\r\n串口收到:",NULL);
DEBUG_COM_STREAM(UART.rxbuff,NULL);
if(memcmp(UART.rxbuff,reg_key,8)==0)
{
EXE_CPU_REG();
CHECK_CPU_REG();
}
else if(memcmp(UART.rxbuff,"SYS?",4)==0)
PRINT_SYS();
}
//TEST_TIM2();
}
}
復制代碼
全部資料51hei附件下載:
脈寬自適應_通用解碼.7z
(3.95 MB, 下載次數: 46)
2021-7-18 14:43 上傳
點擊文件名下載附件
STM8_無線315&433_脈寬自適應_通用解碼
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久99九九
|
一区在线播放
|
女同一区二区三区
|
日本黄色中文字幕
|
闷骚老干部cao个爽 欧美区一区二
|
91激情视频
|
aaa成人
|
亚洲福利在线观看
|
91女人18毛片水多国产
|
色婷婷综合在线
|
av网站免费看
|
看片黄全部免费
|
久久av资源
|
亚洲欧美久久
|
国产一级黄
|
综合久久综合
|
可以看毛片的网站
|
麻豆成人91精品二区三区
|
国产成年人视频
|
黄视频网站在线观看
|
国语对白做受欧美
|
www.sihu
|
在线播放国产精品
|
欧美黑人猛交
|
欧美成人精品一区二区三区在线看
|
欧美日韩黄色片
|
久草视频免费在线观看
|
欧美精品在线视频
|
黄色天堂
|
免费毛片观看
|
中文字幕在线观看免费
|
国产三级在线观看视频
|
三级视频在线观看
|
欧美日本
|
欧美激情免费
|
懂色av蜜臀av粉嫩av分享
|
国产精品一区二区久久
|
精品一区二区国产
|
天天看天天干
|
色一情一乱一乱一区91av
|
日韩一级在线
|