原创 137 timerb pwm功能

功能三:PWM   總結而言產生PWM是利用兩個寄存器AB,設置那個計數器到了清除 計數器,這個比較的寄存器就是週期,另外一個就是佔空比。本模式就只能產生一個PWM。還有一個緩衝功能,用戶開啓後可以使得波形平滑的改變到其他頻率或者佔空比

原创 BAT外部接20M晶振

#include "bat32g137.h" #include "clk.h" #define BIT(x) (1<<x) int main(void) { // P30輸出最爲測試IO PORT->PM3 &=~BIT(0);

原创 137 按鍵中斷

#include "bat32g137.h" int main(void) { // 下降沿觸發 /* Set KR0 pin */ PORT->PU7 |= 0x01U; PORT->PM7 |= 0x01

原创 模擬EEPROM程序分析

1.讀部分。 uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data) { uint16_t ValidPage = PAGE0; uint16_t Addre

原创 137 timerm cap

#include "bat32g137.h" #include "userdefine.h" #include "clk.h" #include "tmm.h" /***********************************

原创 137 下載口(64 pin)

5---SWDIO 9---SWCLK 6---RESET 12 13 --GND 14 15 --VDD

原创 137 timerb 相位計數器

功能四:相位計數模式 其實就是捕獲外部信號波形,TBCLK0 TBCLK1,組合起來。定時器B對把外部信號作爲時鐘來計數,根據不同的配置實現計數遞增還是遞減。邊沿可以任意選擇。   硬件上 P05 連接到P01.       實際

原创 關於DMA通道的猜想

有些芯片有DMA0 DMA1。 如果DMA0 的多個通道 同時有信號觸發,響應按照優先級分時執行。 如果是兩個  DMA的通道,主要不產生資源競爭訪問,應該就沒有問題,就可以實現同事處理。 分時複用其實已經滿足要求,DMA只是一個操作IP

原创 137 SPI+DMA

#include "bat32g137.h" #include "sci.h" #include "stdio.h" // bref: spi dma發送 // para: // note: static void spi_send_

原创 137 CMP比較器

137的和135的是一樣的。 #include "bat32g137.h" #include "cmp.h" int main(void) { // postive input CMP_PSIDE_VCIN12--P20 //

原创 137 PGA

#include "bat32g137.h" #include "pga.h" #include "dac.h" #include "adc.h" #include "EventRecorder.h" // K

原创 137 SPI

#include "bat32g137.h" #include "sci.h" #include "stdio.h" // bref: spi發送 // para: // note: static void spi_send(uint

原创 137 timerb-捕獲功能

總結而言,timerb 捕獲模式,是捕獲開始,就把計數值放到緩衝區中,其實緩衝區就是軟件上的FIFO,下一次邊沿捕獲,這個值在寄存器中。這個時候就可以利用本次計數器值減去上次計數值,從而計算出脈寬。或者脈衝週期。 TBCR 寄存器可以

原创 137 flash存儲

#include "bat32g137.h" #include "EventRecorder.h" // Keil.ARM Compiler::Compiler:Event Recorder #include

原创 137 看門狗

#include "bat32g137.h" #include "EventRecorder.h" // Keil.ARM Compiler::Compiler:Event Recorder #include