親測 可用 上傳視頻 太麻煩了
stm32單片機433M無線解碼源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "timer.h"
-
- /************************************************
- APB1 的時鐘為 36M, 而從 STM32 的內部時鐘樹圖得知:當 APB1 的時鐘分頻數為 1 的
- 時候, TIM2~7 的時鐘為 APB1 的時鐘,而如果 APB1 的時鐘分頻數不為 1,那么 TIM2~7 的時
- 鐘頻率將為 APB1 時鐘的兩倍。因此, TIM3 的時鐘為 72M,再根據我們設計的 arr 和 psc 的值,
- 就可以計算中斷時間了。計算公式如下:
- Tout= ((arr+1)*(psc+1))/Tclk;
- 其中:
- Tclk: TIM3 的輸入時鐘頻率(單位為 Mhz)。
- Tout: TIM3 溢出時間(單位為 us)
- 1ms=1000us
- ************************************************/
- uint8_t rf_data[4];
- extern uint8_t decode_ok; //解碼成功標志位
- extern uint8_t RF;
- int main(void)
- {
-
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化為115200
- LED_Init(); //LED端口初始化
- TIM3_Int_Init(79,71);//10Khz的計數頻率,計數到5000為500ms 90us
- while(1)
- {
- if(decode_ok == 1) //解碼成功
- {
- switch(rf_data[2])
- {
- case 0x84: //解碼為0xf8,點亮LED
- {
- LED0=0;
- break;
- }
- case 0x82: //解碼為0xf2,熄滅LED
- {
- LED1=0;
- break;
- }
- case 0x81: //解碼為0xf2,熄滅LED
- {
- LED0=1;
- LED1=1;
- break;
- }
- }
- }
- }
- }
復制代碼
所有資料51hei提供下載:
433解碼程序.rar
(292.75 KB, 下載次數: 650)
2018-9-30 15:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|