以下是程式
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_usart.h"
#define led0 gpio_pin_8
#define led1 gpio_pin_9
#define led2 gpio_pin_10
#define led3 gpio_pin_11
#define led4 gpio_pin_12
#define led5 gpio_pin_13
#define led6 gpio_pin_14
#define led7 gpio_pin_15
#define led_all (led0 | led1 | led2 | led3 | led4 | led5 | led6 | led7)
#define led_port gpioc
#define n_le
gpio_pin_2
#define n_le_port
gpiod
#define swn
4 /* 按鍵數量 */
#define n_k1
gpio_pin_0
#define n_k2
gpio_pin_8
#define n_k3
gpio_pin_1
#define n_k4
gpio_pin_2
#define n_k1c
gpioa
#define n_k2c
gpioa
#define n_k3c
gpiob
#define n_k4c
gpiob
#define led_out(x)
gpio_setbits(led_port,led_all), \
gpio_resetbits(led_port, x<<8), \
gpio_setbits(n_le_port,n_le), \
gpio_resetbits(n_le_port,n_le)
typedef enum
y_bool;
static y_bool led_t = true;
/* 設定二極體狀態標記 */
static y_bool rl = true;
/* 設定二極體左右移狀態標記 */
static y_bool km = true;
/* 設定二極體移動速度標記 */
static y_bool key_t = false;
/* 設定按鍵檢測標記 */
static y_bool usart_t = false;
/* 設定序列口傳送標記 */
/*void systeminit()
*//* 配置函式(初始化) */
void init()
/*systick中斷程式*/
void systick_handler()
/* k2(控制快慢)按下後續處理 */
/* 初始:設為1s */
/* 按下可改變速度 */
void syst()
/* 判斷k1(亮燈移動方向,左右)是否按下 */
/* 按下可改變方向 */
void led()
else
}/* 按鍵檢測函式 */
uint8_t key_c()
;/* 設定按鍵組(引腳),使按鍵可以表示為十六進製制 */
const gpio_typedef* key_port[swn] = ;/* 設定按鍵組(埠),使按鍵可以表示為十六進製制 */
for(key_n = 0, i = 0; i < swn; i++)/* 檢測 */
x = (key_n ^ key_o) & key_o;/* 取key_n補碼(值為按鍵十六進製制值) */
key_o = key_n;/* 當前按鍵值作為下次比較物件 */
return x;
}/* 串列埠傳送函式 */
void usart_sendstring(int8_t *str)
while(str[index] != 0); //檢查字串結束標誌
}/* 按鍵處理函式 */
void key_d(uint8_t x)
int main()
if(key_t)
if(key_dn)
if(usart_t)}}
UART序列口工作原理
通過非同步收發器 uart 用來傳輸序列資料。uart之間以全雙工方式傳輸資料,最精簡的連線方法只有三條連線 txd用於傳送資料,rxd用於接收資料,gnd給雙方提供參考電平。uart使用標準的cmos邏輯電平 0 5v 0 3.3v 0 2.5v或0 1.8v四種 來表示資料,高電平為1,低電平為...
RSSI是接收訊號強度指示
要通過rssi計算兩點之間距離,就要建立無線損耗模型,要經過實地實驗,前人已經建立了很多經典的衰減模型,例如室內衰減模型,我看這個就能用,不過要測試衰減因子n和xq,還有參考距離的rss,今早用了兩個500mw的無線模組在一公尺範圍內測得rssi 47.5dbm,用50mw的測試也是,這不是扯淡?可...
序列口動態掃瞄顯示電路
2006 05 11 09 29 36 51微控制器程式設計範例 序列口動態掃瞄顯示電路 微控制器並行i o口數量總是有限的,有時並行口需作其他更重要的用途,一般也不會用數量眾多的並行i o口專門用來驅動顯示電路,能否用80c51的序列通訊口加上少量i o及擴充套件晶元用於顯示電路呢?答案是肯定的。...