|
- /***********************************************************
- -功能描述:開機初始化
- -參數(shù)說明:無
- -返回說明:無
- ***********************************************************/
- void Init_Start(void)
- {
- ADC_InitTypeDef ADC_InitStruct;
-
- /*ADC配置*/
- ADC_InitStruct.refSource = REF_INT; //內(nèi)部基準源
- ADC_InitStruct.dataAlign = AD_LEFT; //ADC數(shù)據(jù)為左對齊
- 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做個項目時要使用定時器,突然感覺到頭腦一片空白,完全忘記如何配置定時器,看來只能查看手冊了。不知道是不是網(wǎng)速有像51助手一樣的軟件可以方便寄存器的配置,百度了下確實有。下載后才發(fā)現(xiàn)沒有定時器的初始化配置,最后還是把定時器功能和寄存器花時間看了一遍。這讓我很郁悶,萌發(fā)了自己寫一個配置軟件。我只學過VB,就打算用VB編寫一個。但是裝個VB又跟CAD沖突,真是煩人。之后想到了STM32庫函數(shù)的做法,就用ADC的初始化試下好不好用。做法如下:
使用過程中還是感覺到不明了。需要打開頭文件查看,而且配置的東西多。得再找辦法,突然想到excel可以用VBA,可以還是猶豫,現(xiàn)在很多人用的是wps,都沒有安裝VBA開發(fā)插件,如果分享給他人用就麻煩了。試著能不能只用公式就可以實現(xiàn)。折騰了一個晚上寫了一個USART的寄存器配置
使用效果和網(wǎng)站下載的單片機助手差不多,心血來潮就想把所有的外設(shè)模塊配置都寫出來。在這個過程中并不容易,特別是定時器的設(shè)置,T1的設(shè)置項比較麻煩,但我以根據(jù)自己的理解已經(jīng)把T1和T2的設(shè)置選項做了分類。每個模塊寫出來后還要反復試驗測試看下每個設(shè)置項會不會有錯誤。對于一些配置非常簡單且不需要修改的模塊就沒必要做了,例如看門狗,EEPROM等。TWI也不打算做了,因為初始化不能主要是使用麻煩,很多狀態(tài)要處理。整個excel的設(shè)計花了將近二十天的時間,有很大部分時間是用來看手冊的和測試的。
有了外設(shè)的初始化配置又開始在想能不能寫一個比較通用的模塊操作文件,可以重復使用就節(jié)省了很多時間。又忙碌了一個星期(特別是TWI花了我很大的精力,所以我并不喜歡AVR的TWI)。
這些模塊的操作代碼有些是在學習的時候?qū)懙模恍枳隽苏,但是肯定是存在不足之處的,所以只作為入門學習的參考使用。下面還是具體介紹下是怎么使用的:
假設(shè)使用的是我寫的模塊操作文件,這寫文件都是沒有初始化函數(shù)的。首先就需要用AVR配置工具生成初始化函數(shù)(建議新建一個C文件專門用于存放初始化函數(shù))。打開“Atmega8a寄存器配置文件”,這個文件是參考m8a寫的所以就叫這個名字了。在文件的下方有八個工作表,第一個是幫助,里面是關(guān)于使用的說明。后面是外設(shè)的寄存器配置表格。單擊相應進行配置設(shè)置。
設(shè)置區(qū)中灰色打底的是可以選擇設(shè)置的,橙色打底的是一些重要的說明。小黑點打底的設(shè)置項是要求必須按順序依次設(shè)置。設(shè)置完后就可以選中代碼生成區(qū)中的代碼進行復制,執(zhí)行復制后選擇區(qū)會出現(xiàn)螞蟻線。再粘貼到自己的C文件中即可。
注明:模塊的操作文件是在IAR的開發(fā)環(huán)境寫的,不是使用IAR的朋友需要自己更改下才能使用。Excel的寄存器配置文件可能有些開發(fā)平臺對于個別寄存器的命名會有所差異,可以通知我修改。
Atmega8a寄存器配置.zip
(64.4 KB, 下載次數(shù): 107)
2016-3-9 16:34 上傳
點擊文件名下載附件
模塊操作文件.zip
(12.05 KB, 下載次數(shù): 71)
2016-3-9 16:34 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|