打印
[文档下载]

MINI58 BSP函数汇总

[复制链接]
4927|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
enqying|  楼主 | 2015-12-11 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 enqying 于 2015-12-11 20:59 编辑

MINI58 BSP函数汇总
(花费了一个星期,将mini58 资料看完,整理的)

MINI58_BSP函数列表.rar

382.93 KB

沙发
yiyigirl2014| | 2015-12-11 20:34 | 只看该作者
#define ADC_CONFIG_CH7(adc, u32Source)                                         //配置通道7的模拟输入源。        
#define ADC_GET_CONVERSION_DATA(adc, u32ChNum)           //获取转换数据
#define ADC_GET_INT_FLAG(adc, u32Mask)                                         //获取转换中断标志
#define ADC_CLR_INT_FLAG(adc, u32Mask)                                      //清除转换中断标志
#define ADC_IS_BUSY(adc)                                                                   //获取ADC是否忙标志
#define ADC_IS_DATA_OVERRUN(adc, u32ChNum)                            //获取是否覆盖上次未读转换数据标志
#define ADC_IS_DATA_VALID(adc, u32ChNum)                             //获取转换数据有效标志
#define ADC_POWER_DOWN(adc)                                                    //禁止ADC转换
#define ADC_POWER_ON(adc)                                                            //允许ADC转换
#define ADC_ENABLE_CMP0(adc, u32ChNum, u32Condition,u32Data, u32MatchCount) //启用CMP0比较
#define ADC_DISABLE_CMP0(adc)                                                                      //禁用CMP0比较
#define ADC_ENABLE_CMP1(adc, u32ChNum, u32Condition,u32Data, u32MatchCount)       //启用CMP1比较
#define ADC_DISABLE_CMP1(adc)                                                     //禁用CMP1比较
#define ADC_SET_INPUT_CHANNEL(adc, u32Mask)                            //选择转换通道
#define ADC_START_CONV(adc)                                                         //开始ADC转换
#define ADC_STOP_CONV(adc)                                                           //开始ADC转换
voidADC_Open(ADC_T *adc, uint32_t u32InputMode, uint32_t u32OpMode, uint32_tu32ChMask);//开启ADC一个通道
voidADC_Close(ADC_T *adc);                                                              //关闭ADC通道
voidADC_EnableHWTrigger(ADC_T *adc, uint32_t u32Source, uint32_t u32Param);//允许硬件触发ADC转换
voidADC_DisableHWTrigger(ADC_T *adc);                                          //禁止硬件触发ADC转换
voidADC_SetExtraSampleTime(ADC_T *adc, uint32_t u32ChNum, uint32_t u32SampleTime);//设置转换通道采样时间
voidADC_EnableInt(ADC_T *adc, uint32_t u32Mask);           //开启ADC转换中断
voidADC_DisableInt(ADC_T *adc, uint32_t u32Mask);      //禁止ADC转换中断            
voidADC_SeqModeEnable(ADC_T *adc, uint32_t u32SeqTYPE, uint32_t u32ModeSel);//开启ADC PWM连续模式控制
voidADC_SeqModeTriggerSrc(ADC_T *adc,
uint32_t u32SeqModeTriSrc1,
uint32_t u32SeqModeTriSrc2); //设置ADCPWM连续模式触发源和触发类型

使用特权

评论回复
板凳
yiyigirl2014| | 2015-12-11 20:36 | 只看该作者
#define PWM_ENABLE_COMPLEMENTARY_MODE(pwm)                                //选择PWM工作模式为互补模式        
#define PWM_DISABLE_COMPLEMENTARY_MODE(pwm)                     //选择PWM工作模式为独立模式关闭互补模式
#define PWM_ENABLE_GROUP_MODE(pwm)                                                          //开启PWM成组功能
#define PWM_DISABLE_GROUP_MODE(pwm)                                                   //禁止PWM成组功能
#define PWM_ENABLE_SYNC_MODE(pwm)                                                          //选择PWM工作模式为同步模式
#define PWM_DISABLE_SYNC_MODE(pwm)                                                           //选择PWM工作模式为独立模式关闭同步模式  
#define PWM_ENABLE_OUTPUT_INVERTER(pwm, u32ChannelMask)        //设置指定PWM通道输出反向
#define PWM_SET_PRESCALER(pwm, u32ChannelNum, u32Prescaler) //设置指定PWM通道预分频数值
#define PWM_SET_DIVIDER(pwm, u32ChannelNum, u32Divider)                 //设置指定PWM通道分频数值
#define PWM_SET_CMR(pwm, u32ChannelNum, u32CMR)                         //设置指定PWM通道比较器寄存器值
#define PWM_SET_CNR(pwm, u32ChannelNum, u32CNR)                                 //设置指定PWM计数器周期寄存器值
#define PWM_SET_CMRD(pwm, u32ChannelNum, u32CMRD)                         //设置指定PWM不对称模式向下比较器寄存器值define PWM_SET_ALIGNED_TYPE(pwm, u32ChannelMask, u32AlignedType)        //选择指定PWM计数器对齐方式
#define PWM_ENABLE_ASYMMETRIC_MODE(pwm)                                        //选择中心对齐方式下的不对称模式
#define PWM_ENABLE_PCAEN(pwm)                                                                        //选择精准中心对齐模式。


uint32_t PWM_ConfigOutputChannel(PWM_T *pwm, uint32_t u32ChannelNum,
uint32_t u32Frequency, uint32_t u32DutyCycle);                                // 设置所选通道PWM边缘对齐自动重载模式
void PWM_Start(PWM_T *pwm, uint32_t u32ChannelMask);                                                                                //开启所选通道PWM
void PWM_Stop(PWM_T *pwm, uint32_t u32ChannelMask);                                                                                //关闭所选通道PWM
void PWM_ForceStop(PWM_T *pwm, uint32_t u32ChannelMask);                                                                //强制关闭所选通道PWM
void PWM_EnableADCTrigger(PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Condition);                 //启用所选通道触发ADC
void PWM_DisableADCTrigger(PWM_T *pwm, uint32_t u32ChannelNum);                                                           //关闭所选通道触发ADC
void PWM_ClearADCTriggerFlag(PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Condition);         //清除所选通道触发ADC标志
uint32_t PWM_GetADCTriggerFlag (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Condition); //获取所选通道触发ADC标志
void PWM_EnableFaultBrake(PWM_T *pwm, uint32_t u32ChannelMask, uint32_t u32LevelMask, uint32_t u32BrakeSource);//启用所选通道刹车功能
void PWM_ClearFaultBrakeFlag(PWM_T *pwm, uint32_t u32BrakeSource);                                                        //清除所选通道刹车功能标志
void PWM_EnableOutput(PWM_T *pwm, uint32_t u32ChannelMask);                                                                //开启所选通道PWM输出
void PWM_DisableOutput(PWM_T *pwm, uint32_t u32ChannelMask);                                                         //关闭所选通道PWM输出
void PWM_EnableDeadZone(PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Duration);                 //开启所选通道PWM死区功能
void PWM_DisableDeadZone(PWM_T *pwm, uint32_t u32ChannelNum);                                                        //关闭所选通道PWM死区功能
void PWM_EnableDutyInt(PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32IntDutyType);                 //开启比较向下PWM中断使能
void PWM_DisableDutyInt(PWM_T *pwm, uint32_t u32ChannelNum);                                                                //关闭比较向下PWM中断使能
void PWM_ClearDutyIntFlag(PWM_T *pwm, uint32_t u32ChannelNum);                                                         //清除比较向下PWM中断使能
uint32_t PWM_GetDutyIntFlag(PWM_T *pwm, uint32_t u32ChannelNum);                                                 //获取比较向下PWM中断使能
void PWM_EnableFaultBrakeInt(PWM_T *pwm, uint32_t u32BrakeSource);                                                        //开启Fault Brake0 和 Fault Brake1中断使能
void PWM_DisableFaultBrakeInt(PWM_T *pwm, uint32_t u32BrakeSource);                                                 //关闭Fault Brake0 和 Fault Brake1中断使能
void PWM_ClearFaultBrakeIntFlag(PWM_T *pwm, uint32_t u32BrakeSource);                                                //清除Fault Brake0 和 Fault Brake1中断标志
uint32_t PWM_GetFaultBrakeIntFlag(PWM_T *pwm, uint32_t u32BrakeSource);                                        //获取Fault Brake0 和 Fault Brake1中断标志
void PWM_EnablePeriodInt(PWM_T *pwm, uint32_t u32ChannelNum);                                                        //开启PWM 0点中断使能
void PWM_DisablePeriodInt(PWM_T *pwm, uint32_t u32ChannelNum);                                                         //关闭PWM 0点中断使能
void PWM_ClearPeriodIntFlag(PWM_T *pwm, uint32_t u32ChannelNum);                                                        //清除PWM 0点中断标志
uint32_t PWM_GetPeriodIntFlag(PWM_T *pwm, uint32_t u32ChannelNum);                                                //获取PWM 0点中断标志
void PWM_EnableCenterInt(PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32IntPeriodType);        //开启PWM中心对齐方式中周期中断使能
void PWM_DisableCenterInt(PWM_T *pwm, uint32_t u32ChannelNum);                                                        //关闭PWM中心对齐方式中周期中断使能
void PWM_ClearCenterIntFlag(PWM_T *pwm, uint32_t u32ChannelNum);                                                        //清除PWM中心对齐方式中周期中断标志
uint32_t PWM_GetCenterIntFlag(PWM_T *pwm, uint32_t u32ChannelNum);                                                 //获取PWM中心对齐方式中周期中断标志
void PWM_EnableRiseInt(PWM_T *pwm, uint32_t u32ChannelNum);                                                                 //开启PWM向上比较中断使能
void PWM_DisableRiseInt(PWM_T *pwm, uint32_t u32ChannelNum);                                                         //关闭PWM向上比较中断使能
void PWM_ClearRiseIntFlag(PWM_T *pwm, uint32_t u32ChannelNum);                                                         //清除PWM向上比较中断标志
uint32_t PWM_GetRiseIntFlag(PWM_T *pwm, uint32_t u32ChannelNum);                                                 //获取PWM向上比较中断标志

使用特权

评论回复
地板
yiyigirl2014| | 2015-12-11 20:37 | 只看该作者

#define SYS_CLEAR_BOD_INT_FLAG()                //清除欠压检测器中断标志位
#define SYS_CLEAR_BOD_LPM()                    //解除欠压检测器低功耗模式,恢复正常模式
#define SYS_DISABLE_BOD()                                                //禁用欠压检测器
#define SYS_ENABLE_BOD()                       //启用压检测器
#define SYS_GET_BOD_INT_FLAG()                  //获取欠压检测器中断标志
#define SYS_GET_BOD_OUTPUT()                   //获取欠压检测器输出状态
#define SYS_DISABLE_BOD_RST()                   //禁用欠压复位
#define SYS_ENABLE_BOD_RST()                   //启用欠压复位
#define SYS_SET_BOD_LPM()                      //设置欠压检测器低功耗模式
#define SYS_SET_BOD_LEVEL(u32Level)             //设置欠压检测器阈电压
#define SYS_IS_BOD_RST()                       //检测系统复位是否由BOD复位引起的
#define SYS_IS_CPU_RST()                        //检测系统复位是否由CPU复位引起的
#define SYS_IS_POR_RST()                        //检测系统复位是否由上电复位引起的
#define SYS_IS_RSTPIN_RST()                     //检测系统复位是否由管脚复位引起的
#define SYS_IS_SYSTEM_RST()                     //检测系统复位是否由系统复位引起的
#define SYS_IS_WDT_RST()                        //检测系统复位是否由看门狗复位引起的
#define SYS_DISABLE_POR()                       //禁用加电复位功能(MINI系列没有此功能,M051有)
#define SYS_ENABLE_POR()                        //启用加电复位功能(MINI系列没有此功能,M051有)
#define SYS_CLEAR_RST_SOURCE(u32RstSrc)         //清除系统复位状态标志

__STATIC_INLINE void SYS_UnlockReg(void)                //解除寄存器保护
__STATIC_INLINE void SYS_LockReg(void)                        //启用寄存器保护
void SYS_ClearResetSrc(uint32_t u32Src);                 //清除系统选择的复位源
uint32_t SYS_GetBODStatus(void);                                        //获取系统欠压状态
uint32_t SYS_GetResetSrc(void);                                        //获取系统复位的复位源
uint32_t SYS_IsRegLocked(void);                                        //检测寄存器保护状态
uint32_t  SYS_ReadPDID(void);                                                //读取芯片ID
void SYS_ResetChip(void);                                                         //重启芯片
void SYS_ResetCPU(void);                                                        //重启CPU
void SYS_ResetModule(uint32_t u32ModuleIndex); //重启模块
void SYS_EnableBOD(int32_t i32Mode, uint32_t u32BODLevel);// 启用欠压“中断”功能,设置欠压检测阈电压
void SYS_DisableBOD(void);                                                 //禁用欠压检测功能

使用特权

评论回复
5
yiyigirl2014| | 2015-12-11 20:38 | 只看该作者
#define WDT_CLEAR_RESET_FLAG()                                                //清除看门狗超时系统标志。        
#define WDT_CLEAR_TIMEOUT_INT_FLAG()                      //清除看门狗超时中断系统标志
#define WDT_CLEAR_TIMEOUT_WAKEUP_FLAG()                  //清除看门狗超时唤醒系统标志
#define WDT_GET_RESET_FLAG()                                           //获取看门狗定时器复位标志
#define WDT_GET_TIMEOUT_INT_FLAG()                                  //获取看门狗超时中断系统标志
#define WDT_GET_TIMEOUT_WAKEUP_FLAG()                        //获取看门狗超时唤醒系统标志  
#define WDT_RESET_COUNTER()                                                        //清除看门狗计数器
void  WDT_Open(uint32_t u32TimeoutInterval,
                  uint32_t u32ResetDelay,
                  uint32_t u32EnableReset,
                  uint32_t u32EnableWakeup);          //开启看门狗
void WDT_Close(void);                                                                         //关闭看门狗。
void WDT_EnableInt(void);                                                                 //开启看门狗超时中断
void WDT_DisableInt(void);                                                                //关闭看门狗超时中断       

使用特权

评论回复
6
yiyigirl2014| | 2015-12-11 20:45 | 只看该作者
#define WDT                                 ((WDT_T *) WDT_BASE)              
#define WWDT                                 ((WWDT_T *) WWDT_BASE)            
#define TIMER0                 ((TIMER_T *) TIMER0_BASE)        
#define TIMER1           ((TIMER_T *) TIMER1_BASE)         
#define I2C               ((I2C_T *) I2C0_BASE)            
#define I2C0              ((I2C_T *) I2C0_BASE)            
#define I2C1              ((I2C_T *) I2C1_BASE)            
#define SPI               ((SPI_T *) SPI_BASE)              
#define SPI0              ((SPI_T *) SPI_BASE)              
#define PWM             ((PWM_T *) PWM_BASE)              
#define UART             ((UART_T *) UART0_BASE)           
#define UART0            ((UART_T *) UART0_BASE)           
#define UART1            ((UART_T *) UART1_BASE)           
#define ADC              ((ADC_T *) ADC_BASE)              
#define ACMP             ((ACMP_T *) ACMP_BASE)            
#define SYS               ((SYS_T *) SYS_BASE)              
#define CLK               ((CLK_T *) CLK_BASE)              
#define INTR              ((INTR_T *) INTR_BASE)            
#define P0                ((GPIO_T *) P0_BASE)              
#define P1                ((GPIO_T *) P1_BASE)              
#define P2                ((GPIO_T *) P2_BASE)              
#define P3                ((GPIO_T *) P3_BASE)              
#define P4                ((GPIO_T *) P4_BASE)            
#define P5                ((GPIO_T *) P5_BASE)              
#define GPIO              ((GPIO_DB_T *) GPIO_DBNCECON_BASE)  
#define FMC              ((FMC_T *) FMC_BASE)              

使用特权

评论回复
7
yiyigirl2014| | 2015-12-11 20:46 | 只看该作者
void CLK_DisableCKO(void);                                                                                //禁用频率输出。
void CLK_EnableCKO(uint32_t u32ClkSrc, uint32_t u32ClkDiv, uint32_t u32ClkDivBy1En);        //CKO选择时钟输出。
void CLK_PowerDown(void);                                                                                //让系统进入省电模式
void CLK_Idle(void);                                                                                                //让系统进入空闲模式
uint32_t CLK_GetHXTFreq(void);                                                                        //获取外部高频晶体频率。频率的单位是赫兹
uint32_t CLK_GetLXTFreq(void);                                                                        //获取外部低频晶体频率。频率的单位是赫兹
uint32_t CLK_GetHCLKFreq(void);                                                                        //获取HCLK频率。频率的单位是赫兹。
uint32_t CLK_GetCPUFreq(void);                                                                        //获取CPU频率。频率的单位是赫兹。
uint32_t CLK_SetCoreClock(uint32_t u32Hclk);                                                //设置HCLK频率
void CLK_SetHCLK(uint32_t u32ClkSrc, uint32_t u32ClkDiv);                        //这个函数设置HCLK时钟源和HCLK时钟分频器
void CLK_SetModuleClock(uint32_t u32ModuleIdx, uint32_t u32ClkSrc, uint32_t u32ClkDiv);        //设置所选模块时钟源和模块时钟分频器
void CLK_SetSysTickClockSrc(uint32_t u32ClkSrc);                                        //设置系统滴答计数时钟源
void CLK_EnableSysTick(uint32_t u32ClkSrc, uint32_t u32Count);                //开启系统滴答计数
void CLK_DisableSysTick(void);                                                                        //禁用系统滴答计数
void CLK_EnableXtalRC(uint32_t u32ClkMask);                                                //开启时钟源
void CLK_DisableXtalRC(uint32_t u32ClkMask);                                                //关闭时钟源
void CLK_EnableModuleClock(uint32_t u32ModuleIdx);                                //启用模块时钟
void CLK_DisableModuleClock(uint32_t u32ModuleIdx);                                //禁用模块时钟
uint32_t CLK_EnablePLL(uint32_t u32PllClkSrc, uint32_t u32PllFreq);        //设置时钟锁相环频率
void CLK_DisablePLL(void);                                                                                //禁用时钟锁相环
void CLK_SysTickDelay(uint32_t us);                                                                //执行延迟函数。(systick时钟源是HCLK)
uint32_t CLK_WaitClockReady(uint32_t u32ClkMask);            //检查选择时钟源状态(5ms)稳定1 异常0

使用特权

评论回复
8
mwang| | 2015-12-12 12:16 | 只看该作者
楼主很用心啊,如果只想了解各个库函数还可以去看BSP目录\Document下的那个chm文档,那个都是英文,不如你这样中译后的明显

使用特权

评论回复
9
西门扫雪| | 2015-12-12 16:54 | 只看该作者
yiyigirl2014 发表于 2015-12-11 20:46
void CLK_DisableCKO(void);                                                                                //禁用频率输出。
void CLK_EnableCKO(uint32_t u32ClkSrc, uint32_t ...

楼主你提供的这些资料能够拿来直接用吗
这个是不是只能用到新唐的板子上面

使用特权

评论回复
10
enqying|  楼主 | 2015-12-13 10:29 | 只看该作者
本帖最后由 enqying 于 2015-12-13 10:31 编辑
西门扫雪 发表于 2015-12-12 16:54
楼主你提供的这些资料能够拿来直接用吗
这个是不是只能用到新唐的板子上面 ...

可以,很认真对每个函数做了分析,有部分函数还咨询了新塘技术人员

使用特权

评论回复
11
ccw1986| | 2015-12-14 20:24 | 只看该作者
enqying 发表于 2015-12-13 10:29
可以,很认真对每个函数做了分析,有部分函数还咨询了新塘技术人员

楼主辛苦了,让新唐能够发扬光大

使用特权

评论回复
12
huangcunxiake| | 2016-4-13 22:34 | 只看该作者
#define WDT_CLEAR_RESET_FLAG()                                                //清除看门狗超时系统标志。        
#define WDT_CLEAR_TIMEOUT_INT_FLAG()                      //清除看门狗超时中断系统标志
#define WDT_CLEAR_TIMEOUT_WAKEUP_FLAG()                  //清除看门狗超时唤醒系统标志
#define WDT_GET_RESET_FLAG()                                           //获取看门狗定时器复位标志
#define WDT_GET_TIMEOUT_INT_FLAG()                                  //获取看门狗超时中断系统标志
#define WDT_GET_TIMEOUT_WAKEUP_FLAG()                        //获取看门狗超时唤醒系统标志  
#define WDT_RESET_COUNTER()                                                        //清除看门狗计数器
void  WDT_Open(uint32_t u32TimeoutInterval,
                  uint32_t u32ResetDelay,
                  uint32_t u32EnableReset,
                  uint32_t u32EnableWakeup);          //开启看门狗
void WDT_Close(void);                                                                         //关闭看门狗。
void WDT_EnableInt(void);                                                                 //开启看门狗超时中断
void WDT_DisableInt(void);                                                                //关闭看门狗超时中断   
------------------------------
这些看门狗操作的,不知道有没有窗口看门狗,另外谁知道窗口看门狗和看门狗有什么区别吗

使用特权

评论回复
13
飘渺孤鸿莺| | 2016-8-18 13:02 | 只看该作者
很好看看

使用特权

评论回复
14
yiyigirl2014| | 2016-8-18 15:20 | 只看该作者
楼主做的工作就是做了解释说明,且是中文的。要不每个我都要查字典。

使用特权

评论回复
15
gejigeji521| | 2016-8-18 20:25 | 只看该作者
辛苦一周的总结,让我们少折腾了,节约了不少时间,做的很认真,很好。佩服

使用特权

评论回复
16
643757107| | 2016-8-19 21:48 | 只看该作者
例程的使用如果做个详细说明就爽了。

使用特权

评论回复
17
稳稳の幸福| | 2016-8-20 08:56 | 只看该作者
V3.01.001
2016-7-27
Mini51 series (Mini51 / Mini52 / Mini54) software package based on CMSIS version 3.1. It supports both IAR and Keil development environment with drivers and samples codes. Examples source code for NuTiny-SDK-Mini51 and Learning Board are included. For detailed, please download it and unzip it.

使用特权

评论回复
18
稳稳の幸福| | 2016-8-20 09:09 | 只看该作者
http://www.nuvoton.com.cn/resour ... SP_V3.00.002_EN.pdf
这有一个说明,很不错,可惜英文的。

使用特权

评论回复
19
yiyigirl2014| | 2016-8-20 15:59 | 只看该作者
系统的看一下手册,再看库函数会更好的效果。

使用特权

评论回复
20
heisexingqisi| | 2016-8-20 22:47 | 只看该作者
用户手册很好懂,这个系列是最简单的ARM,非常好学。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

28

帖子

0

粉丝