|
- /***********************************************************
- -功能描述:開機初始化
- -參數說明:無
- -返回說明:無
- ***********************************************************/
- void Init_Start(void)
- {
- ADC_InitTypeDef ADC_InitStruct;
-
- /*ADC配置*/
- ADC_InitStruct.refSource = REF_INT; //內部基準源
- ADC_InitStruct.dataAlign = AD_LEFT; //ADC數據為左對齊
- ADC_InitStruct.channel = 7;
- ADC_InitStruct.prescaler = CK_PS32; //32預分頻
- ADC_InitStruct.adcEnabled=1; //使能ADC
- ADC_Init(&ADC_InitStruct);
復制代碼
#ifndef _AVR_ADC_H
#define _AVR_ADC_H
#include "my_define.h"
#define ADC_PRECL(x) st(ADCSR &= 0xf8;ADCSR |= (x);)
#define ADC_EN() st(ADCSR |= BV(ADEN);)
#define ADC_CLOSE() st(ADCSR &= ~BV(ADEN);)
#define ADC_START() st(ADCSR |= BV(ADSC);)
#define ADC_END() (ADCSR & BV(ADSC))
enum
{
REF_EXT = 0,
REF_VCC = 1,
REF_INT = 3,
AD_LEFT = 1,
AD_RIGHT = 0,
CONT_MOD = 1,
ONCE_MOD = 0,
CK_PS2 = 1,
CK_PS4,
CK_PS8,
CK_PS16,
CK_PS32,
CK_PS64,
CK_PS128,
};
typedef struct
{
uint8 channel : 4;
uint8 def : 1;
uint8 dataAlign : 1;
uint8 refSource : 2;
uint8 prescaler : 3;
uint8 adcIE : 1;
uint8 def1 : 1;
uint8 convertMod: 1;
uint8 start : 1;
uint8 adcEnabled: 1;
}ADC_InitTypeDef;
void ADC_Init(ADC_InitTypeDef *parameter);
#endif
這事情得從去年說起,去年學了AVR單片機后來又學了CC2530。當想用AVR做個項目時要使用定時器,突然感覺到頭腦一片空白,完全忘記如何配置定時器,看來只能查看手冊了。不知道是不是網速有像51助手一樣的軟件可以方便寄存器的配置,百度了下確實有。下載后才發現沒有定時器的初始化配置,最后還是把定時器功能和寄存器花時間看了一遍。這讓我很郁悶,萌發了自己寫一個配置軟件。我只學過VB,就打算用VB編寫一個。但是裝個VB又跟CAD沖突,真是煩人。之后想到了STM32庫函數的做法,就用ADC的初始化試下好不好用。做法如下:
使用過程中還是感覺到不明了。需要打開頭文件查看,而且配置的東西多。得再找辦法,突然想到excel可以用VBA,可以還是猶豫,現在很多人用的是wps,都沒有安裝VBA開發插件,如果分享給他人用就麻煩了。試著能不能只用公式就可以實現。折騰了一個晚上寫了一個USART的寄存器配置
USART配置.JPG (111.89 KB, 下載次數: 247)
下載附件
2016-3-9 16:32 上傳
使用效果和網站下載的單片機助手差不多,心血來潮就想把所有的外設模塊配置都寫出來。在這個過程中并不容易,特別是定時器的設置,T1的設置項比較麻煩,但我以根據自己的理解已經把T1和T2的設置選項做了分類。每個模塊寫出來后還要反復試驗測試看下每個設置項會不會有錯誤。對于一些配置非常簡單且不需要修改的模塊就沒必要做了,例如看門狗,EEPROM等。TWI也不打算做了,因為初始化不能主要是使用麻煩,很多狀態要處理。整個excel的設計花了將近二十天的時間,有很大部分時間是用來看手冊的和測試的。
有了外設的初始化配置又開始在想能不能寫一個比較通用的模塊操作文件,可以重復使用就節省了很多時間。又忙碌了一個星期(特別是TWI花了我很大的精力,所以我并不喜歡AVR的TWI)。
文件1.JPG (24.18 KB, 下載次數: 281)
下載附件
2016-3-9 16:32 上傳
文件2.JPG (30.15 KB, 下載次數: 270)
下載附件
2016-3-9 16:32 上傳
這些模塊的操作代碼有些是在學習的時候寫的,只需做了整理,但是肯定是存在不足之處的,所以只作為入門學習的參考使用。下面還是具體介紹下是怎么使用的:
捕獲.JPG (131.32 KB, 下載次數: 254)
下載附件
2016-3-9 16:32 上傳
定時器.jpg (108.99 KB, 下載次數: 269)
下載附件
2016-3-9 16:32 上傳
假設使用的是我寫的模塊操作文件,這寫文件都是沒有初始化函數的。首先就需要用AVR配置工具生成初始化函數(建議新建一個C文件專門用于存放初始化函數)。打開“Atmega8a寄存器配置文件”,這個文件是參考m8a寫的所以就叫這個名字了。在文件的下方有八個工作表,第一個是幫助,里面是關于使用的說明。后面是外設的寄存器配置表格。單擊相應進行配置設置。
定時器設置.JPG (163.37 KB, 下載次數: 262)
下載附件
2016-3-9 16:32 上傳
設置區中灰色打底的是可以選擇設置的,橙色打底的是一些重要的說明。小黑點打底的設置項是要求必須按順序依次設置。設置完后就可以選中代碼生成區中的代碼進行復制,執行復制后選擇區會出現螞蟻線。再粘貼到自己的C文件中即可。
注明:模塊的操作文件是在IAR的開發環境寫的,不是使用IAR的朋友需要自己更改下才能使用。Excel的寄存器配置文件可能有些開發平臺對于個別寄存器的命名會有所差異,可以通知我修改。
Atmega8a寄存器配置.zip
(64.4 KB, 下載次數: 107)
2016-3-9 16:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
模塊操作文件.zip
(12.05 KB, 下載次數: 71)
2016-3-9 16:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|